From a3d7ef76cbafbb61f8604d2d4a67267e2c6e4f1d Mon Sep 17 00:00:00 2001 From: Abdul Rahman Date: Wed, 8 Apr 2026 19:39:08 +0530 Subject: [PATCH] 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. --- .../hooks/useWorkspaceNavigationMenuItems.ts | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useWorkspaceNavigationMenuItems.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useWorkspaceNavigationMenuItems.ts index 38258e7f364..addc0aa5589 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useWorkspaceNavigationMenuItems.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useWorkspaceNavigationMenuItems.ts @@ -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)), );