mirror of
https://github.com/lingble/twenty.git
synced 2025-10-29 20:02:29 +00:00
When object is not part of the workspace favorite list, we want to show it in the "opened section" while its record page is accessed. This PR: - adds a new component `NavigationDrawerOpenedSection` - makes workflow versions and runs not system object + creates a prefilled view index for these - do not create workspace favorites for these so these do not appear in the workspace section <img width="1129" alt="Capture d’écran 2024-09-26 à 11 45 25" src="https://github.com/user-attachments/assets/c84d773c-0bef-4dce-b66a-55d7d00b0fb6">
58 lines
2.1 KiB
TypeScript
58 lines
2.1 KiB
TypeScript
import { useParams } from 'react-router-dom';
|
|
|
|
import { useFilteredObjectMetadataItemsForWorkspaceFavorites } from '@/navigation/hooks/useObjectMetadataItemsInWorkspaceFavorites';
|
|
import { NavigationDrawerSectionForObjectMetadataItems } from '@/object-metadata/components/NavigationDrawerSectionForObjectMetadataItems';
|
|
import { NavigationDrawerSectionForObjectMetadataItemsSkeletonLoader } from '@/object-metadata/components/NavigationDrawerSectionForObjectMetadataItemsSkeletonLoader';
|
|
import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems';
|
|
import { useIsPrefetchLoading } from '@/prefetch/hooks/useIsPrefetchLoading';
|
|
import { usePrefetchedData } from '@/prefetch/hooks/usePrefetchedData';
|
|
import { PrefetchKey } from '@/prefetch/types/PrefetchKey';
|
|
import { View } from '@/views/types/View';
|
|
|
|
export const NavigationDrawerOpenedSection = () => {
|
|
const { activeObjectMetadataItems } = useFilteredObjectMetadataItems();
|
|
const filteredActiveObjectMetadataItems = activeObjectMetadataItems.filter(
|
|
(item) => !item.isRemote,
|
|
);
|
|
|
|
const { records: views } = usePrefetchedData<View>(PrefetchKey.AllViews);
|
|
const loading = useIsPrefetchLoading();
|
|
|
|
const currentObjectNamePlural = useParams().objectNamePlural;
|
|
|
|
const { activeObjectMetadataItems: workspaceFavoritesObjectMetadataItems } =
|
|
useFilteredObjectMetadataItemsForWorkspaceFavorites();
|
|
|
|
if (!currentObjectNamePlural) {
|
|
return;
|
|
}
|
|
|
|
const objectMetadataItem = filteredActiveObjectMetadataItems.find(
|
|
(item) => item.namePlural === currentObjectNamePlural,
|
|
);
|
|
|
|
if (!objectMetadataItem) {
|
|
return;
|
|
}
|
|
|
|
const shouldDisplayObjectInOpenedSection =
|
|
!workspaceFavoritesObjectMetadataItems
|
|
.map((item) => item.id)
|
|
.includes(objectMetadataItem.id);
|
|
|
|
if (loading) {
|
|
return <NavigationDrawerSectionForObjectMetadataItemsSkeletonLoader />;
|
|
}
|
|
|
|
return (
|
|
shouldDisplayObjectInOpenedSection && (
|
|
<NavigationDrawerSectionForObjectMetadataItems
|
|
sectionTitle={'Opened'}
|
|
objectMetadataItems={[objectMetadataItem]}
|
|
views={views}
|
|
isRemote={false}
|
|
/>
|
|
)
|
|
);
|
|
};
|