diff --git a/web/src/lib/components/asset-viewer/actions/archive-action.svelte b/web/src/lib/components/asset-viewer/actions/archive-action.svelte index 6337b27892..ed19dff864 100644 --- a/web/src/lib/components/asset-viewer/actions/archive-action.svelte +++ b/web/src/lib/components/asset-viewer/actions/archive-action.svelte @@ -1,6 +1,6 @@ <script lang="ts"> import { shortcut } from '$lib/actions/shortcut'; - import type { OnAction } from '$lib/components/asset-viewer/actions/action'; + import type { OnAction, PreAction } from '$lib/components/asset-viewer/actions/action'; import MenuOption from '$lib/components/shared-components/context-menu/menu-option.svelte'; import { AssetAction } from '$lib/constants'; import { toggleArchive } from '$lib/utils/asset-utils'; @@ -11,11 +11,15 @@ interface Props { asset: AssetResponseDto; onAction: OnAction; + preAction: PreAction; } - let { asset, onAction }: Props = $props(); + let { asset, onAction, preAction }: Props = $props(); const onArchive = async () => { + if (!asset.isArchived) { + preAction({ type: AssetAction.ARCHIVE, asset }); + } const updatedAsset = await toggleArchive(asset); if (updatedAsset) { onAction({ type: asset.isArchived ? AssetAction.ARCHIVE : AssetAction.UNARCHIVE, asset }); diff --git a/web/src/lib/components/asset-viewer/asset-viewer-nav-bar.svelte b/web/src/lib/components/asset-viewer/asset-viewer-nav-bar.svelte index 957f517ad8..6111b81dbb 100644 --- a/web/src/lib/components/asset-viewer/asset-viewer-nav-bar.svelte +++ b/web/src/lib/components/asset-viewer/asset-viewer-nav-bar.svelte @@ -181,7 +181,7 @@ {#if asset.type === AssetTypeEnum.Image} <SetProfilePictureAction {asset} /> {/if} - <ArchiveAction {asset} {onAction} /> + <ArchiveAction {asset} {onAction} {preAction} /> <MenuOption icon={mdiUpload} onClick={() => openFileUploadDialog({ multiple: false, assetId: asset.id })} diff --git a/web/src/lib/components/photos-page/asset-grid.svelte b/web/src/lib/components/photos-page/asset-grid.svelte index 5d84258b6b..c32527da89 100644 --- a/web/src/lib/components/photos-page/asset-grid.svelte +++ b/web/src/lib/components/photos-page/asset-grid.svelte @@ -377,7 +377,8 @@ case removeAction: case AssetAction.TRASH: case AssetAction.RESTORE: - case AssetAction.DELETE: { + case AssetAction.DELETE: + case AssetAction.ARCHIVE: { // find the next asset to show or close the viewer // eslint-disable-next-line @typescript-eslint/no-unused-expressions (await handleNext()) || (await handlePrevious()) || (await handleClose({ asset: action.asset })); diff --git a/web/src/lib/stores/assets-store.svelte.ts b/web/src/lib/stores/assets-store.svelte.ts index 924aba0a6e..cd86e60fc5 100644 --- a/web/src/lib/stores/assets-store.svelte.ts +++ b/web/src/lib/stores/assets-store.svelte.ts @@ -1120,7 +1120,6 @@ export class AssetStore { } if (changedGeometry) { changedBuckets.add(bucket); - break; } } } diff --git a/web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte b/web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte index 95c3d59b1c..ec148c91e7 100644 --- a/web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte +++ b/web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte @@ -435,7 +435,7 @@ }); const isShared = $derived(viewMode === AlbumPageViewMode.SELECT_ASSETS ? false : album.albumUsers.length > 0); const isSelectionMode = $derived( - viewMode === AlbumPageViewMode.SELECT_ASSETS ? false : viewMode === AlbumPageViewMode.SELECT_THUMBNAIL, + viewMode === AlbumPageViewMode.SELECT_ASSETS ? true : viewMode === AlbumPageViewMode.SELECT_THUMBNAIL, ); const singleSelect = $derived( viewMode === AlbumPageViewMode.SELECT_ASSETS ? false : viewMode === AlbumPageViewMode.SELECT_THUMBNAIL,