Files
twenty/packages/twenty-front/src/modules/navigation/hooks/useObjectMetadataItemsInWorkspaceFavorites.ts
nitin 0125d58ba8 Favorite folders (#7998)
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>
2024-11-18 15:22:19 +01:00

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,
};
};