diff --git a/web/apps/photos/src/components/Collections/CollectionOptions/index.tsx b/web/apps/photos/src/components/Collections/CollectionOptions/index.tsx index 1df5bd34ca..ed1da08e9d 100644 --- a/web/apps/photos/src/components/Collections/CollectionOptions/index.tsx +++ b/web/apps/photos/src/components/Collections/CollectionOptions/index.tsx @@ -310,12 +310,6 @@ const CollectionOptions = (props: CollectionOptionsProps) => { } }; - const emptyTrash = async () => { - await TrashService.emptyTrash(); - await TrashService.clearLocalTrash(); - setActiveCollectionID(ALL_SECTION); - }; - const showRenameCollectionModal = () => { setCollectionNamerAttributes({ title: t("RENAME_COLLECTION"), @@ -360,7 +354,6 @@ const CollectionOptions = (props: CollectionOptionsProps) => { setDialogMessage({ title: t("EMPTY_TRASH_TITLE"), content: t("EMPTY_TRASH_MESSAGE"), - proceed: { action: handleCollectionAction(CollectionActions.EMPTY_TRASH), text: t("EMPTY_TRASH"), @@ -369,6 +362,38 @@ const CollectionOptions = (props: CollectionOptionsProps) => { close: { text: t("cancel") }, }); + const emptyTrash = async () => { + await TrashService.emptyTrash(); + await TrashService.clearLocalTrash(); + setActiveCollectionID(ALL_SECTION); + }; + + const downloadCollection2 = () => { + if (isActiveCollectionDownloadInProgress()) return; + + if (collectionSummaryType == "hiddenItems") { + return downloadDefaultHiddenCollectionHelper( + setFilesDownloadProgressAttributesCreator( + activeCollection.name, + HIDDEN_ITEMS_SECTION, + true, + ), + ); + } else { + return downloadCollectionHelper( + activeCollection.id, + setFilesDownloadProgressAttributesCreator( + activeCollection.name, + activeCollection.id, + isHiddenCollection(activeCollection), + ), + ); + } + }; + + const handleDownloadCollection = () => + void downloadCollection2().catch(handleError); + const confirmLeaveSharedAlbum = () => { setDialogMessage({ title: t("LEAVE_SHARED_ALBUM_TITLE"), @@ -420,11 +445,11 @@ const CollectionOptions = (props: CollectionOptionsProps) => { return ( { export default CollectionOptions; interface QuickOptionsProps { - onEmptyTrashClick: () => void; - onShareClick: () => void; - handleCollectionAction: ( - action: CollectionActions, - loader?: boolean, - ) => () => Promise; collectionSummaryType: CollectionSummaryType; - isDownloadInProgress: boolean; + isDownloadInProgress: () => boolean; + onEmptyTrashClick: () => void; + onDownloadClick: () => void; + onShareClick: () => void; } const QuickOptions: React.FC = ({ onEmptyTrashClick, + onDownloadClick, onShareClick, - handleCollectionAction, collectionSummaryType, isDownloadInProgress, }) => { @@ -502,13 +524,13 @@ const QuickOptions: React.FC = ({ )} {showDownloadQuickOption(collectionSummaryType) && - (!isDownloadInProgress ? ( + (isDownloadInProgress() ? ( + + ) : ( - ) : ( - ))} {showShareQuickOption(collectionSummaryType) && ( = ({ ); }; -const showEmptyTrashQuickOption = (type: CollectionSummaryType) => { - return type == "trash"; -}; - /** Props for a generic option. */ interface OptionProps { onClick: () => void; } +const showEmptyTrashQuickOption = (type: CollectionSummaryType) => + type == "trash"; + const EmptyTrashQuickOption: React.FC = ({ onClick }) => ( @@ -537,32 +558,25 @@ const EmptyTrashQuickOption: React.FC = ({ onClick }) => ( ); -const showDownloadQuickOption = (type: CollectionSummaryType) => { - return ( - type == "folder" || - type == "favorites" || - type == "album" || - type == "uncategorized" || - type == "hiddenItems" || - type == "incomingShareViewer" || - type == "incomingShareCollaborator" || - type == "outgoingShare" || - type == "sharedOnlyViaLink" || - type == "archived" || - type == "pinned" - ); +const showDownloadQuickOption = (type: CollectionSummaryType) => + type == "folder" || + type == "favorites" || + type == "album" || + type == "uncategorized" || + type == "hiddenItems" || + type == "incomingShareViewer" || + type == "incomingShareCollaborator" || + type == "outgoingShare" || + type == "sharedOnlyViaLink" || + type == "archived" || + type == "pinned"; + +type DownloadQuickOptionProps = OptionProps & { + collectionSummaryType: CollectionSummaryType; }; -interface DownloadQuickOptionProps { - handleCollectionAction: ( - action: CollectionActions, - loader?: boolean, - ) => () => Promise; - collectionSummaryType: CollectionSummaryType; -} - const DownloadQuickOption: React.FC = ({ - handleCollectionAction, + onClick, collectionSummaryType, }) => ( = ({ : t("DOWNLOAD_COLLECTION") } > - + ); -const showShareQuickOption = (type: CollectionSummaryType) => { - return ( - type == "folder" || - type == "album" || - type == "outgoingShare" || - type == "sharedOnlyViaLink" || - type == "archived" || - type == "incomingShareViewer" || - type == "incomingShareCollaborator" || - type == "pinned" - ); -}; +const showShareQuickOption = (type: CollectionSummaryType) => + type == "folder" || + type == "album" || + type == "outgoingShare" || + type == "sharedOnlyViaLink" || + type == "archived" || + type == "incomingShareViewer" || + type == "incomingShareCollaborator" || + type == "pinned"; interface ShareQuickOptionProps { onClick: () => void;