1 import { isPreviewAvailable } from '@proton/shared/lib/helpers/preview';
3 import type { DecryptedLink } from '../../../store';
4 import { useActions } from '../../../store';
5 import type { ContextMenuProps } from '../../FileBrowser';
6 import { useDetailsModal } from '../../modals/DetailsModal';
7 import { useFilesDetailsModal } from '../../modals/FilesDetailsModal';
8 import { DetailsButton, DownloadButton, PreviewButton } from '../ContextMenu';
9 import { ItemContextMenu } from '../ContextMenu/ItemContextMenu';
10 import { DeletePermanentlyButton, RestoreFromTrashButton } from './ContextMenuButtons';
12 export function TrashItemContextMenu({
19 }: ContextMenuProps & {
20 selectedLinks: DecryptedLink[];
22 const selectedLink = selectedLinks[0];
23 const hasPreviewAvailable =
24 selectedLinks.length === 1 &&
25 selectedLink.isFile &&
26 selectedLink.mimeType &&
27 isPreviewAvailable(selectedLink.mimeType, selectedLink.size);
28 const hasDownloadAvailable = !selectedLinks.some((item) => !item.isFile);
29 const [detailsModal, showDetailsModal] = useDetailsModal();
30 const [filesDetailsModal, showFilesDetailsModal] = useFilesDetailsModal();
31 const { deletePermanently, restoreLinks, confirmModal } = useActions();
35 <ItemContextMenu isOpen={isOpen} open={open} close={close} position={position} anchorRef={anchorRef}>
36 {hasPreviewAvailable && (
37 <PreviewButton shareId={selectedLink.rootShareId} linkId={selectedLink.linkId} close={close} />
39 {hasDownloadAvailable && <DownloadButton selectedBrowserItems={selectedLinks} close={close} />}
41 selectedBrowserItems={selectedLinks}
42 showDetailsModal={showDetailsModal}
43 showFilesDetailsModal={showFilesDetailsModal}
46 <RestoreFromTrashButton restoreLinks={restoreLinks} selectedLinks={selectedLinks} close={close} />
47 <DeletePermanentlyButton
48 selectedLinks={selectedLinks}
49 deletePermanently={deletePermanently}