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:
Charles Bochet
2025-01-27 21:25:02 +01:00
committed by GitHub
parent 549c3faf71
commit 4542199e5c
10 changed files with 48 additions and 73 deletions

View File

@ -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}
/>
);

View File

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