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:
Abdul Rahman
2026-04-08 19:39:08 +05:30
parent af66b6acc8
commit a3d7ef76cb
@@ -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)),
);