diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/components/NavigationMenuItemIcon.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/components/NavigationMenuItemIcon.tsx index dae39451df..aa074076d5 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/components/NavigationMenuItemIcon.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/components/NavigationMenuItemIcon.tsx @@ -96,11 +96,11 @@ export const NavigationMenuItemIcon = ({ } if (navigationMenuItem.type === NavigationMenuItemType.LINK) { - const computedLink = getNavigationMenuItemComputedLink( - navigationMenuItem, + const computedLink = getNavigationMenuItemComputedLink({ + item: navigationMenuItem, objectMetadataItems, views, - ); + }); return ( { const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const views = useAtomStateValue(viewsSelector); + const lastVisitedViewPerObjectMetadataItem = useAtomStateValue( + lastVisitedViewPerObjectMetadataItemState, + ); const { deleteManyNavigationMenuItems } = useDeleteManyNavigationMenuItems(); const folderDroppableId = `${NavigationMenuItemDroppableIds.FAVORITE_FOLDER_PREFIX}${folderId}`; @@ -42,11 +46,12 @@ export const NavigationMenuItemFolderContent = ({ objectMetadataItems, views, ); - const computedLink = getNavigationMenuItemComputedLink( - navigationMenuItem, + const computedLink = getNavigationMenuItemComputedLink({ + item: navigationMenuItem, objectMetadataItems, views, - ); + lastVisitedViewPerObjectMetadataItem, + }); const objectNameSingular = getNavigationMenuItemObjectNameSingular( navigationMenuItem, objectMetadataItems, diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderSubItem.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderSubItem.tsx index cf3decf647..8aa33d441b 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderSubItem.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderSubItem.tsx @@ -21,6 +21,7 @@ import { getNavigationSubItemLeftAdornment } from '@/ui/navigation/navigation-dr import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; import { viewsSelector } from '@/views/states/selectors/viewsSelector'; +import { lastVisitedViewPerObjectMetadataItemState } from '@/navigation/states/lastVisitedViewPerObjectMetadataItemState'; type NavigationMenuItemFolderSubItemProps = { navigationMenuItem: NavigationMenuItem; @@ -50,6 +51,9 @@ export const NavigationMenuItemFolderSubItem = ({ useIsNavigationMenuItemEditHighlighted(navigationMenuItem); const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const views = useAtomStateValue(viewsSelector); + const lastVisitedViewPerObjectMetadataItem = useAtomStateValue( + lastVisitedViewPerObjectMetadataItemState, + ); const navigate = useNavigate(); const setLastClickedNavigationMenuItemId = useSetAtomState( lastClickedNavigationMenuItemIdState, @@ -65,11 +69,12 @@ export const NavigationMenuItemFolderSubItem = ({ objectMetadataItems, views, ); - const computedLink = getNavigationMenuItemComputedLink( - navigationMenuItem, + const computedLink = getNavigationMenuItemComputedLink({ + item: navigationMenuItem, objectMetadataItems, views, - ); + lastVisitedViewPerObjectMetadataItem, + }); const objectNameSingular = getNavigationMenuItemObjectNameSingular( navigationMenuItem, objectMetadataItems, diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/folder/hooks/useNavigationMenuItemFolderOpenState.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/hooks/useNavigationMenuItemFolderOpenState.ts index df9c26157f..3fe0b211d5 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/folder/hooks/useNavigationMenuItemFolderOpenState.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/hooks/useNavigationMenuItemFolderOpenState.ts @@ -16,6 +16,7 @@ import { useAtomState } from '@/ui/utilities/state/jotai/hooks/useAtomState'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; import { viewsSelector } from '@/views/states/selectors/viewsSelector'; +import { lastVisitedViewPerObjectMetadataItemState } from '@/navigation/states/lastVisitedViewPerObjectMetadataItemState'; type UseNavigationMenuItemFolderOpenStateParams = { folderId: string; @@ -30,6 +31,9 @@ export const useNavigationMenuItemFolderOpenState = ({ const isMobile = useIsMobile(); const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const views = useAtomStateValue(viewsSelector); + const lastVisitedViewPerObjectMetadataItem = useAtomStateValue( + lastVisitedViewPerObjectMetadataItemState, + ); const [openNavigationMenuItemFolderIds, setOpenNavigationMenuItemFolderIds] = useAtomState(openNavigationMenuItemFolderIdsState); @@ -74,20 +78,22 @@ export const useNavigationMenuItemFolderOpenState = ({ if (item.type === NavigationMenuItemType.LINK) { return false; } - const computedLink = getNavigationMenuItemComputedLink( + const computedLink = getNavigationMenuItemComputedLink({ item, objectMetadataItems, views, - ); + lastVisitedViewPerObjectMetadataItem, + }); return isNonEmptyString(computedLink); }, ); if (isDefined(firstNonLinkItem)) { - const link = getNavigationMenuItemComputedLink( - firstNonLinkItem, + const link = getNavigationMenuItemComputedLink({ + item: firstNonLinkItem, objectMetadataItems, views, - ); + lastVisitedViewPerObjectMetadataItem, + }); if (isNonEmptyString(link)) { setLastClickedNavigationMenuItemId(firstNonLinkItem.id); navigate(link); diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useIdentifyActiveNavigationMenuItems.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useIdentifyActiveNavigationMenuItems.ts index 28d2ab51e5..ff9400fe40 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useIdentifyActiveNavigationMenuItems.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useIdentifyActiveNavigationMenuItems.ts @@ -13,6 +13,7 @@ import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilte import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { viewsSelector } from '@/views/states/selectors/viewsSelector'; +import { lastVisitedViewPerObjectMetadataItemState } from '@/navigation/states/lastVisitedViewPerObjectMetadataItemState'; export const useIdentifyActiveNavigationMenuItems = (): { activeNavigationMenuItemIds: string[]; @@ -23,6 +24,9 @@ export const useIdentifyActiveNavigationMenuItems = (): { lastClickedNavigationMenuItemIdState, ); const views = useAtomStateValue(viewsSelector); + const lastVisitedViewPerObjectMetadataItem = useAtomStateValue( + lastVisitedViewPerObjectMetadataItemState, + ); const { activeObjectMetadataItems, objectMetadataItems } = useFilteredObjectMetadataItems(); @@ -64,11 +68,12 @@ export const useIdentifyActiveNavigationMenuItems = (): { if (isDefined(lastClickedItem)) { const lastClickedNavigationMenuItemLink = - getNavigationMenuItemComputedLink( - lastClickedItem, + getNavigationMenuItemComputedLink({ + item: lastClickedItem, objectMetadataItems, views, - ); + lastVisitedViewPerObjectMetadataItem, + }); const lastClickedObjectMetadataId = getObjectMetadataForNavigationMenuItem( lastClickedItem, @@ -100,11 +105,12 @@ export const useIdentifyActiveNavigationMenuItems = (): { if (item.type !== NavigationMenuItemType.RECORD) { return false; } - const link = getNavigationMenuItemComputedLink( + const link = getNavigationMenuItemComputedLink({ item, objectMetadataItems, views, - ); + lastVisitedViewPerObjectMetadataItem, + }); return link === currentPath; }) .map((item) => item.id); @@ -174,6 +180,7 @@ export const useIdentifyActiveNavigationMenuItems = (): { lastClickedNavigationMenuItemId, objectMetadataItems, views, + lastVisitedViewPerObjectMetadataItem, currentPathWithSearch, currentPath, currentObjectMetadataItem, diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/object/components/NavigationDrawerItemForObjectMetadataItem.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/object/components/NavigationDrawerItemForObjectMetadataItem.tsx index 130a502681..17cbc21511 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/object/components/NavigationDrawerItemForObjectMetadataItem.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/object/components/NavigationDrawerItemForObjectMetadataItem.tsx @@ -85,11 +85,12 @@ export const NavigationDrawerItemForObjectMetadataItem = ({ const hasNavigationMenuItem = isRecord || isView || isObject; const navigationPath = hasNavigationMenuItem - ? getNavigationMenuItemComputedLink( - navigationMenuItem!, + ? getNavigationMenuItemComputedLink({ + item: navigationMenuItem!, objectMetadataItems, views, - ) + lastVisitedViewPerObjectMetadataItem, + }) : getAppPath( AppPath.RecordIndexPage, { objectNamePlural: objectMetadataItem.namePlural }, diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/__tests__/getObjectNavigationMenuItemComputedLink.test.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/__tests__/getObjectNavigationMenuItemComputedLink.test.ts new file mode 100644 index 0000000000..0e2467380b --- /dev/null +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/__tests__/getObjectNavigationMenuItemComputedLink.test.ts @@ -0,0 +1,62 @@ +import { getObjectNavigationMenuItemComputedLink } from '@/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemComputedLink'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; +import { type View } from '@/views/types/View'; +import { ViewKey } from '~/generated-metadata/graphql'; + +const mockObjectMetadataItems: Pick< + EnrichedObjectMetadataItem, + 'id' | 'namePlural' +>[] = [ + { + id: 'metadata-1', + namePlural: 'people', + }, +]; + +const mockViews: Pick[] = [ + { id: 'view-index', objectMetadataId: 'metadata-1', key: ViewKey.INDEX }, +]; + +describe('getObjectNavigationMenuItemComputedLink', () => { + it('should link to the index view when no last visited view is provided', () => { + const result = getObjectNavigationMenuItemComputedLink( + { targetObjectMetadataId: 'metadata-1' }, + mockObjectMetadataItems, + mockViews, + ); + + expect(result).toBe('/objects/people?viewId=view-index'); + }); + + it('should link to the last visited view when provided, overriding the index view', () => { + const result = getObjectNavigationMenuItemComputedLink( + { targetObjectMetadataId: 'metadata-1' }, + mockObjectMetadataItems, + mockViews, + 'view-42', + ); + + expect(result).toBe('/objects/people?viewId=view-42'); + }); + + it('should link to the bare object path when neither a last visited nor an index view exists', () => { + const result = getObjectNavigationMenuItemComputedLink( + { targetObjectMetadataId: 'metadata-1' }, + mockObjectMetadataItems, + [], + ); + + expect(result).toBe('/objects/people'); + }); + + it('should return an empty string when the target object metadata is not found', () => { + const result = getObjectNavigationMenuItemComputedLink( + { targetObjectMetadataId: 'non-existent-metadata' }, + mockObjectMetadataItems, + mockViews, + 'view-42', + ); + + expect(result).toBe(''); + }); +}); diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemComputedLink.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemComputedLink.ts index aa578b0d0a..fd037e9285 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemComputedLink.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemComputedLink.ts @@ -7,8 +7,9 @@ import { type NavigationMenuItem } from '~/generated-metadata/graphql'; export const getObjectNavigationMenuItemComputedLink = ( item: Pick, - objectMetadataItems: EnrichedObjectMetadataItem[], + objectMetadataItems: Pick[], views: Pick[], + lastVisitedViewId?: string, ): string => { const objectMetadataItem = objectMetadataItems.find( (meta) => meta.id === item.targetObjectMetadataId, @@ -16,14 +17,18 @@ export const getObjectNavigationMenuItemComputedLink = ( if (!isDefined(objectMetadataItem)) { return ''; } - const indexView = views.find( + + const indexViewId = views.find( (view) => view.objectMetadataId === objectMetadataItem.id && view.key === ViewKey.INDEX, - ); + )?.id; + + const targetViewId = lastVisitedViewId ?? indexViewId; + return getAppPath( AppPath.RecordIndexPage, { objectNamePlural: objectMetadataItem.namePlural }, - indexView ? { viewId: indexView.id } : {}, + isDefined(targetViewId) ? { viewId: targetViewId } : undefined, ); }; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/sections/workspace/components/WorkspaceSection.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/workspace/components/WorkspaceSection.tsx index b16c92a4b4..5a2f6dfc05 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/sections/workspace/components/WorkspaceSection.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/workspace/components/WorkspaceSection.tsx @@ -35,6 +35,7 @@ import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomState import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; import { viewsSelector } from '@/views/states/selectors/viewsSelector'; import { NavigationMenuItemType, SidePanelPages } from 'twenty-shared/types'; +import { lastVisitedViewPerObjectMetadataItemState } from '@/navigation/states/lastVisitedViewPerObjectMetadataItemState'; const StyledRightIconsContainer = styled.div` align-items: center; @@ -47,6 +48,9 @@ export const WorkspaceSection = () => { const { workspaceNavigationMenuItemsSorted } = useSortedNavigationMenuItems(); const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const views = useAtomStateValue(viewsSelector); + const lastVisitedViewPerObjectMetadataItem = useAtomStateValue( + lastVisitedViewPerObjectMetadataItemState, + ); const { enterLayoutCustomizationMode } = useEnterLayoutCustomizationMode(); const isLayoutCustomizationModeEnabled = useAtomStateValue( isLayoutCustomizationModeEnabledState, @@ -85,19 +89,21 @@ export const WorkspaceSection = () => { const firstChild = workspaceNavigationMenuItemsSorted.find((navItem) => { if (navItem.folderId !== folderId) return false; if (navItem.type === NavigationMenuItemType.LINK) return false; - const link = getNavigationMenuItemComputedLink( - navItem, + const link = getNavigationMenuItemComputedLink({ + item: navItem, objectMetadataItems, views, - ); + lastVisitedViewPerObjectMetadataItem, + }); return isNonEmptyString(link); }); if (firstChild) { - const link = getNavigationMenuItemComputedLink( - firstChild, + const link = getNavigationMenuItemComputedLink({ + item: firstChild, objectMetadataItems, views, - ); + lastVisitedViewPerObjectMetadataItem, + }); if (isNonEmptyString(link)) { navigate(link); } @@ -119,11 +125,12 @@ export const WorkspaceSection = () => { pageIcon: getIcon(objectMetadataItem.icon), }); } - const link = getNavigationMenuItemComputedLink( + const link = getNavigationMenuItemComputedLink({ item, objectMetadataItems, views, - ); + lastVisitedViewPerObjectMetadataItem, + }); if (isNonEmptyString(link)) { navigate(link); } diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/utils/__tests__/getNavigationMenuItemComputedLink.test.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/utils/__tests__/getNavigationMenuItemComputedLink.test.ts new file mode 100644 index 0000000000..be76cdf330 --- /dev/null +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/utils/__tests__/getNavigationMenuItemComputedLink.test.ts @@ -0,0 +1,65 @@ +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; +import { type View } from '@/views/types/View'; +import { + NavigationMenuItemType, + ViewKey, + type NavigationMenuItem, +} from '~/generated-metadata/graphql'; + +import { getNavigationMenuItemComputedLink } from '@/navigation-menu-item/display/utils/getNavigationMenuItemComputedLink'; + +const objectMetadataItems = [ + { id: 'obj-1', namePlural: 'people' }, + { id: 'obj-2', namePlural: 'companies' }, +] as EnrichedObjectMetadataItem[]; + +const views: Pick[] = [ + { id: 'view-index', objectMetadataId: 'obj-1', key: ViewKey.INDEX }, +]; + +const objectItem: NavigationMenuItem = { + id: 'nav-1', + type: NavigationMenuItemType.OBJECT, + targetObjectMetadataId: 'obj-1', + position: 0, + createdAt: '', + updatedAt: '', +}; + +describe('getNavigationMenuItemComputedLink', () => { + it('should link an object item to its last visited view when one is recorded', () => { + const link = getNavigationMenuItemComputedLink({ + item: objectItem, + objectMetadataItems, + views, + lastVisitedViewPerObjectMetadataItem: { 'obj-1': 'view-custom' }, + }); + + expect(link).toBe('/objects/people?viewId=view-custom'); + }); + + // Regression: the link used to always force ?viewId=, ignoring + // any last visited view. The last visited view now takes precedence, and the + // index view is only the fallback when none is recorded. + it('should fall back to the index view when no last visited view is recorded', () => { + const link = getNavigationMenuItemComputedLink({ + item: objectItem, + objectMetadataItems, + views, + lastVisitedViewPerObjectMetadataItem: null, + }); + + expect(link).toBe('/objects/people?viewId=view-index'); + }); + + it('should fall back to the index view rather than another object last visited view', () => { + const link = getNavigationMenuItemComputedLink({ + item: objectItem, + objectMetadataItems, + views, + lastVisitedViewPerObjectMetadataItem: { 'obj-2': 'view-other' }, + }); + + expect(link).toBe('/objects/people?viewId=view-index'); + }); +}); diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/utils/getNavigationMenuItemComputedLink.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/utils/getNavigationMenuItemComputedLink.ts index 6f751adab7..548aae3296 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/utils/getNavigationMenuItemComputedLink.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/utils/getNavigationMenuItemComputedLink.ts @@ -6,20 +6,33 @@ import { getViewNavigationMenuItemComputedLink } from '@/navigation-menu-item/di import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type View } from '@/views/types/View'; import { NavigationMenuItemType } from 'twenty-shared/types'; +import { isDefined } from 'twenty-shared/utils'; import { type NavigationMenuItem } from '~/generated-metadata/graphql'; -export const getNavigationMenuItemComputedLink = ( - item: NavigationMenuItem, - objectMetadataItems: EnrichedObjectMetadataItem[], - views: Pick[], -): string => { +export const getNavigationMenuItemComputedLink = ({ + item, + objectMetadataItems, + views, + lastVisitedViewPerObjectMetadataItem, +}: { + item: NavigationMenuItem; + objectMetadataItems: EnrichedObjectMetadataItem[]; + views: Pick[]; + lastVisitedViewPerObjectMetadataItem?: Record | null; +}): string => { switch (item.type) { - case NavigationMenuItemType.OBJECT: + case NavigationMenuItemType.OBJECT: { + const lastVisitedViewId = isDefined(item.targetObjectMetadataId) + ? lastVisitedViewPerObjectMetadataItem?.[item.targetObjectMetadataId] + : undefined; + return getObjectNavigationMenuItemComputedLink( item, objectMetadataItems, views, + lastVisitedViewId, ); + } case NavigationMenuItemType.VIEW: return getViewNavigationMenuItemComputedLink( item, diff --git a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts index bdb2bf7908..94a8315021 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts @@ -21,6 +21,7 @@ import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomState import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; import { viewsSelector } from '@/views/states/selectors/viewsSelector'; import { type NavigationMenuItem } from '~/generated-metadata/graphql'; +import { lastVisitedViewPerObjectMetadataItemState } from '@/navigation/states/lastVisitedViewPerObjectMetadataItemState'; const computeInsertionPosition = ( selectedItem: { id: string; folderId?: string | null }, @@ -65,6 +66,9 @@ export const useNavigationMenuItemEditOrganizeActions = const { moveUp, moveDown, remove } = useNavigationMenuItemMoveRemove(); const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const views = useAtomStateValue(viewsSelector); + const lastVisitedViewPerObjectMetadataItem = useAtomStateValue( + lastVisitedViewPerObjectMetadataItemState, + ); const selectedItem = selectedNavigationMenuItemIdInEditMode ? items.find((item) => item.id === selectedNavigationMenuItemIdInEditMode) @@ -116,11 +120,12 @@ export const useNavigationMenuItemEditOrganizeActions = if (isDefined(nextItem)) { setSelectedNavigationMenuItemIdInEditMode(nextItem.id); - const link = getNavigationMenuItemComputedLink( - nextItem, + const link = getNavigationMenuItemComputedLink({ + item: nextItem, objectMetadataItems, views, - ); + lastVisitedViewPerObjectMetadataItem, + }); if (isNonEmptyString(link)) { navigate(link); } diff --git a/packages/twenty-front/src/modules/navigation/utils/getFirstNavigationMenuItemLink.ts b/packages/twenty-front/src/modules/navigation/utils/getFirstNavigationMenuItemLink.ts index 14951c92eb..58922851e0 100644 --- a/packages/twenty-front/src/modules/navigation/utils/getFirstNavigationMenuItemLink.ts +++ b/packages/twenty-front/src/modules/navigation/utils/getFirstNavigationMenuItemLink.ts @@ -56,11 +56,11 @@ export const getFirstNavigationMenuItemLink = ({ } } - const link = getNavigationMenuItemComputedLink( + const link = getNavigationMenuItemComputedLink({ item, objectMetadataItems, views, - ); + }); if (isNonEmptyString(link)) { return link;