import { useLingui } from '@lingui/react/macro'; import { useRecoilValue, useSetRecoilState } from 'recoil'; 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 { addMenuItemInsertionContextState } from '@/navigation-menu-item/states/addMenuItemInsertionContextState'; import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/states/selectedNavigationMenuItemInEditModeState'; export const useAddFolderToNavigationMenu = () => { const { t } = useLingui(); const { addFolderToDraft } = useAddFolderToNavigationMenuDraft(); const { workspaceNavigationMenuItems } = useNavigationMenuItemsDraftState(); const navigationMenuItemsDraft = useRecoilValue( navigationMenuItemsDraftState, ); const setSelectedNavigationMenuItemInEditMode = useSetRecoilState( selectedNavigationMenuItemInEditModeState, ); const { openNavigationMenuItemInCommandMenu } = useOpenNavigationMenuItemInCommandMenu(); const addMenuItemInsertionContext = useRecoilValue( addMenuItemInsertionContextState, ); const setAddMenuItemInsertionContext = useSetRecoilState( addMenuItemInsertionContextState, ); 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 }; };