import { FunctionComponent, useCallback, useMemo } from 'react' import { PopoverFileItemActionType } from '../AttachedFilesPopover/PopoverFileItemAction' import { FOCUSABLE_BUT_NOT_TABBABLE } from '@/Constants/Constants' import Icon from '@/Components/Icon/Icon' import Switch from '@/Components/Switch/Switch' import { observer } from 'mobx-react-lite' import { FilesController } from '@/Controllers/FilesController' import { SelectedItemsController } from '@/Controllers/SelectedItemsController' type Props = { closeMenu: () => void closeOnBlur: (event: { relatedTarget: EventTarget | null }) => void filesController: FilesController selectionController: SelectedItemsController isFileAttachedToNote?: boolean renameToggleCallback?: (isRenamingFile: boolean) => void shouldShowRenameOption: boolean shouldShowAttachOption: boolean } const FileMenuOptions: FunctionComponent = ({ closeMenu, closeOnBlur, filesController, selectionController, isFileAttachedToNote, renameToggleCallback, shouldShowRenameOption, shouldShowAttachOption, }) => { const { selectedFiles } = selectionController const { handleFileAction } = filesController const hasProtectedFiles = useMemo(() => selectedFiles.some((file) => file.protected), [selectedFiles]) const onPreview = useCallback(() => { void handleFileAction({ type: PopoverFileItemActionType.PreviewFile, payload: { file: selectedFiles[0], otherFiles: selectedFiles.length > 1 ? selectedFiles : filesController.allFiles, }, }) closeMenu() }, [closeMenu, filesController.allFiles, handleFileAction, selectedFiles]) const onDetach = useCallback(() => { const file = selectedFiles[0] void handleFileAction({ type: PopoverFileItemActionType.DetachFileToNote, payload: { file }, }) closeMenu() }, [closeMenu, handleFileAction, selectedFiles]) const onAttach = useCallback(() => { const file = selectedFiles[0] void handleFileAction({ type: PopoverFileItemActionType.AttachFileToNote, payload: { file }, }) closeMenu() }, [closeMenu, handleFileAction, selectedFiles]) return ( <> {selectedFiles.length === 1 && ( <> {isFileAttachedToNote ? ( ) : shouldShowAttachOption ? ( ) : null} )}
{shouldShowRenameOption && ( )} ) } export default observer(FileMenuOptions)