Merge branch 'feat/inda-383-daily-stat' into 'main'
[ProtonMail-WebClient.git] / applications / drive / src / app / components / sections / Trash / TrashItemContextMenu.tsx
blob7bdf83d9c46a2b008fb055148db3e6db7515c27d
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({
13     selectedLinks,
14     anchorRef,
15     isOpen,
16     position,
17     open,
18     close,
19 }: ContextMenuProps & {
20     selectedLinks: DecryptedLink[];
21 }) {
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();
33     return (
34         <>
35             <ItemContextMenu isOpen={isOpen} open={open} close={close} position={position} anchorRef={anchorRef}>
36                 {hasPreviewAvailable && (
37                     <PreviewButton shareId={selectedLink.rootShareId} linkId={selectedLink.linkId} close={close} />
38                 )}
39                 {hasDownloadAvailable && <DownloadButton selectedBrowserItems={selectedLinks} close={close} />}
40                 <DetailsButton
41                     selectedBrowserItems={selectedLinks}
42                     showDetailsModal={showDetailsModal}
43                     showFilesDetailsModal={showFilesDetailsModal}
44                     close={close}
45                 />
46                 <RestoreFromTrashButton restoreLinks={restoreLinks} selectedLinks={selectedLinks} close={close} />
47                 <DeletePermanentlyButton
48                     selectedLinks={selectedLinks}
49                     deletePermanently={deletePermanently}
50                     close={close}
51                 />
52             </ItemContextMenu>
53             {detailsModal}
54             {filesDetailsModal}
55             {confirmModal}
56         </>
57     );