mirror of
https://github.com/lingble/twenty.git
synced 2025-10-30 20:27:55 +00:00
closes - #5755 --------- Co-authored-by: martmull <martmull@hotmail.fr> Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com> Co-authored-by: Charles Bochet <charles@twenty.com>
36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import { useWorkspaceFavorites } from '@/favorites/hooks/useWorkspaceFavorites';
|
|
import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems';
|
|
import { usePrefetchedData } from '@/prefetch/hooks/usePrefetchedData';
|
|
import { PrefetchKey } from '@/prefetch/types/PrefetchKey';
|
|
import { View } from '@/views/types/View';
|
|
|
|
export const useFilteredObjectMetadataItemsForWorkspaceFavorites = () => {
|
|
const { records: views } = usePrefetchedData<View>(PrefetchKey.AllViews);
|
|
|
|
const workspaceFavorites = useWorkspaceFavorites();
|
|
|
|
const workspaceFavoriteIds = new Set(
|
|
workspaceFavorites.map((favorite) => favorite.recordId),
|
|
);
|
|
|
|
const favoriteViewObjectMetadataIds = new Set(
|
|
views.reduce<string[]>((acc, view) => {
|
|
if (workspaceFavoriteIds.has(view.id)) {
|
|
acc.push(view.objectMetadataId);
|
|
}
|
|
return acc;
|
|
}, []),
|
|
);
|
|
|
|
const { activeObjectMetadataItems } = useFilteredObjectMetadataItems();
|
|
|
|
const activeObjectMetadataItemsInWorkspaceFavorites =
|
|
activeObjectMetadataItems.filter((item) =>
|
|
favoriteViewObjectMetadataIds.has(item.id),
|
|
);
|
|
|
|
return {
|
|
activeObjectMetadataItems: activeObjectMetadataItemsInWorkspaceFavorites,
|
|
};
|
|
};
|