Enhance workspace navigation menu item logic
- Updated `useWorkspaceNavigationMenuItems` to include support for both OBJECT and VIEW types in the navigation menu. - Integrated `getObjectMetadataForNavigationMenuItem` to retrieve metadata for navigation items, improving the handling of object and view metadata. - Utilized `useAtomStateValue` to access `objectMetadataItems` and `views`, enhancing state management within the hook. These changes improve the flexibility and accuracy of the workspace navigation menu, allowing for better integration of different item types.
This commit is contained in:
+19
-2
@@ -1,3 +1,7 @@
|
||||
import { getObjectMetadataForNavigationMenuItem } from '@/navigation-menu-item/display/object/utils/getObjectMetadataForNavigationMenuItem';
|
||||
import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector';
|
||||
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
|
||||
import { viewsSelector } from '@/views/states/selectors/viewsSelector';
|
||||
import { NavigationMenuItemType } from 'twenty-shared/types';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
import { useNavigationMenuItemsData } from './useNavigationMenuItemsData';
|
||||
@@ -7,11 +11,24 @@ export const useWorkspaceNavigationMenuItems = (): {
|
||||
} => {
|
||||
const { workspaceNavigationMenuItems: rawWorkspaceNavigationMenuItems } =
|
||||
useNavigationMenuItemsData();
|
||||
const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector);
|
||||
const views = useAtomStateValue(viewsSelector);
|
||||
|
||||
const objectMetadataIdsInWorkspaceNav = new Set(
|
||||
rawWorkspaceNavigationMenuItems
|
||||
.filter((item) => item.type === NavigationMenuItemType.OBJECT)
|
||||
.map((item) => item.targetObjectMetadataId)
|
||||
.filter(
|
||||
(item) =>
|
||||
item.type === NavigationMenuItemType.OBJECT ||
|
||||
item.type === NavigationMenuItemType.VIEW,
|
||||
)
|
||||
.map(
|
||||
(item) =>
|
||||
getObjectMetadataForNavigationMenuItem(
|
||||
item,
|
||||
objectMetadataItems,
|
||||
views,
|
||||
)?.id,
|
||||
)
|
||||
.filter((objectMetadataId) => isDefined(objectMetadataId)),
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user