import { useLingui } from '@lingui/react/macro'; import { isDefined } from 'twenty-shared/utils'; import { IconFolder } from 'twenty-ui/display'; import { useAddFolderToNavigationMenuDraft } from '@/navigation-menu-item/hooks/useAddFolderToNavigationMenuDraft'; import { useNavigationMenuItemsDraftState } from '@/navigation-menu-item/hooks/useNavigationMenuItemsDraftState'; import { useOpenNavigationMenuItemInCommandMenu } from '@/navigation-menu-item/hooks/useOpenNavigationMenuItemInCommandMenu'; import { addMenuItemInsertionContextStateV2 } from '@/navigation-menu-item/states/addMenuItemInsertionContextStateV2'; import { navigationMenuItemsDraftStateV2 } from '@/navigation-menu-item/states/navigationMenuItemsDraftStateV2'; import { selectedNavigationMenuItemInEditModeStateV2 } from '@/navigation-menu-item/states/selectedNavigationMenuItemInEditModeStateV2'; import { useRecoilValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilValueV2'; import { useSetRecoilStateV2 } from '@/ui/utilities/state/jotai/hooks/useSetRecoilStateV2'; export const useAddFolderToNavigationMenu = () => { const { t } = useLingui(); const { addFolderToDraft } = useAddFolderToNavigationMenuDraft(); const { workspaceNavigationMenuItems } = useNavigationMenuItemsDraftState(); const navigationMenuItemsDraft = useRecoilValueV2( navigationMenuItemsDraftStateV2, ); const setSelectedNavigationMenuItemInEditMode = useSetRecoilStateV2( selectedNavigationMenuItemInEditModeStateV2, ); const { openNavigationMenuItemInCommandMenu } = useOpenNavigationMenuItemInCommandMenu(); const addMenuItemInsertionContext = useRecoilValueV2( addMenuItemInsertionContextStateV2, ); const setAddMenuItemInsertionContext = useSetRecoilStateV2( addMenuItemInsertionContextStateV2, ); const currentDraft = isDefined(navigationMenuItemsDraft) ? navigationMenuItemsDraft : workspaceNavigationMenuItems; const handleAddFolder = () => { const targetFolderId = addMenuItemInsertionContext?.targetFolderId ?? null; const targetIndex = addMenuItemInsertionContext?.targetIndex; const itemId = addFolderToDraft( t`New folder`, currentDraft, targetFolderId, targetIndex, ); setAddMenuItemInsertionContext(null); setSelectedNavigationMenuItemInEditMode(itemId); openNavigationMenuItemInCommandMenu({ pageTitle: t`Edit folder`, pageIcon: IconFolder, focusTitleInput: true, }); }; return { handleAddFolder }; };