Fix object metadata view creation issue (#9875)
Fixes https://github.com/twentyhq/core-team-issues/issues/26 Fixes https://github.com/twentyhq/twenty/issues/9350
This commit is contained in:
@ -1,11 +1,10 @@
|
||||
import { useFilteredObjectMetadataItemsForWorkspaceFavorites } from '@/navigation/hooks/useObjectMetadataItemsInWorkspaceFavorites';
|
||||
import { useWorkspaceFavorites } from '@/favorites/hooks/useWorkspaceFavorites';
|
||||
import { NavigationDrawerSectionForObjectMetadataItems } from '@/object-metadata/components/NavigationDrawerSectionForObjectMetadataItems';
|
||||
import { NavigationDrawerSectionForObjectMetadataItemsSkeletonLoader } from '@/object-metadata/components/NavigationDrawerSectionForObjectMetadataItemsSkeletonLoader';
|
||||
import { useIsPrefetchLoading } from '@/prefetch/hooks/useIsPrefetchLoading';
|
||||
|
||||
export const WorkspaceFavorites = () => {
|
||||
const { activeObjectMetadataItems: objectMetadataItemsToDisplay } =
|
||||
useFilteredObjectMetadataItemsForWorkspaceFavorites();
|
||||
const { workspaceFavoritesObjectMetadataItems } = useWorkspaceFavorites();
|
||||
|
||||
const loading = useIsPrefetchLoading();
|
||||
|
||||
@ -16,7 +15,7 @@ export const WorkspaceFavorites = () => {
|
||||
return (
|
||||
<NavigationDrawerSectionForObjectMetadataItems
|
||||
sectionTitle={'Workspace'}
|
||||
objectMetadataItems={objectMetadataItemsToDisplay}
|
||||
objectMetadataItems={workspaceFavoritesObjectMetadataItems}
|
||||
isRemote={false}
|
||||
/>
|
||||
);
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
import { sortFavorites } from '@/favorites/utils/sortFavorites';
|
||||
import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems';
|
||||
import { useGetObjectRecordIdentifierByNameSingular } from '@/object-metadata/hooks/useGetObjectRecordIdentifierByNameSingular';
|
||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||
@ -13,6 +14,7 @@ import { usePrefetchedFavoritesData } from './usePrefetchedFavoritesData';
|
||||
|
||||
export const useWorkspaceFavorites = () => {
|
||||
const { workspaceFavorites } = usePrefetchedFavoritesData();
|
||||
|
||||
const { records: views } = usePrefetchedData<View>(PrefetchKey.AllViews);
|
||||
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
|
||||
const { objectMetadataItem: favoriteObjectMetadataItem } =
|
||||
@ -52,5 +54,29 @@ export const useWorkspaceFavorites = () => {
|
||||
],
|
||||
);
|
||||
|
||||
return { sortedWorkspaceFavorites };
|
||||
const workspaceFavoriteIds = new Set(
|
||||
sortedWorkspaceFavorites.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 {
|
||||
workspaceFavorites: sortedWorkspaceFavorites,
|
||||
workspaceFavoritesObjectMetadataItems:
|
||||
activeObjectMetadataItemsInWorkspaceFavorites,
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user