From 08066086d4a75167f428f299de16abffd90a27b3 Mon Sep 17 00:00:00 2001 From: Yaros Date: Sun, 7 Dec 2025 19:23:07 +0100 Subject: [PATCH] fix: delete/archive from keyboard updates count --- web/src/lib/components/timeline/Timeline.svelte | 6 ++++++ .../timeline/actions/TimelineKeyboardActions.svelte | 10 +++++++++- .../[[photos=photos]]/[[assetId=id]]/+page.svelte | 2 ++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/web/src/lib/components/timeline/Timeline.svelte b/web/src/lib/components/timeline/Timeline.svelte index ba9cf37bff..45ea24eaf5 100644 --- a/web/src/lib/components/timeline/Timeline.svelte +++ b/web/src/lib/components/timeline/Timeline.svelte @@ -54,6 +54,8 @@ isShowDeleteConfirmation?: boolean; onSelect?: (asset: TimelineAsset) => void; onEscape?: () => void; + onKeyboardDelete?: (assetIds: string[]) => void; + onKeyboardArchive?: (ids: string[]) => void; children?: Snippet; empty?: Snippet; customThumbnailLayout?: Snippet<[TimelineAsset]>; @@ -87,6 +89,8 @@ isShowDeleteConfirmation = $bindable(false), onSelect = () => {}, onEscape = () => {}, + onKeyboardDelete, + onKeyboardArchive, children, empty, customThumbnailLayout, @@ -604,6 +608,8 @@ {assetInteraction} bind:isShowDeleteConfirmation {onEscape} + onAssetDelete={onKeyboardDelete} + onArchive={onKeyboardArchive} /> {#if timelineManager.months.length > 0} diff --git a/web/src/lib/components/timeline/actions/TimelineKeyboardActions.svelte b/web/src/lib/components/timeline/actions/TimelineKeyboardActions.svelte index b731635355..e779d4ec55 100644 --- a/web/src/lib/components/timeline/actions/TimelineKeyboardActions.svelte +++ b/web/src/lib/components/timeline/actions/TimelineKeyboardActions.svelte @@ -27,6 +27,8 @@ assetInteraction: AssetInteraction; isShowDeleteConfirmation: boolean; onEscape?: () => void; + onAssetDelete?: (assetIds: string[]) => void; + onArchive?: (ids: string[]) => void; scrollToAsset: (asset: TimelineAsset) => boolean; } @@ -35,6 +37,8 @@ assetInteraction, isShowDeleteConfirmation = $bindable(false), onEscape, + onAssetDelete, + onArchive, scrollToAsset, }: Props = $props(); @@ -44,7 +48,10 @@ isShowDeleteConfirmation = false; await deleteAssets( !(isTrashEnabled && !force), - (assetIds) => timelineManager.removeAssets(assetIds), + (assetIds) => { + timelineManager.removeAssets(assetIds); + onAssetDelete?.(assetIds); + }, assetInteraction.selectedAssets, !isTrashEnabled || force ? undefined : (assets) => timelineManager.upsertAssets(assets), ); @@ -81,6 +88,7 @@ const visibility = assetInteraction.isAllArchived ? AssetVisibility.Timeline : AssetVisibility.Archive; const ids = await archiveAssets(assetInteraction.selectedAssets, visibility); timelineManager.update(ids, (asset) => (asset.visibility = visibility)); + onArchive?.(ids); deselectAllAssets(); }; diff --git a/web/src/routes/(user)/people/[personId]/[[photos=photos]]/[[assetId=id]]/+page.svelte b/web/src/routes/(user)/people/[personId]/[[photos=photos]]/[[assetId=id]]/+page.svelte index e2ca813b16..be7bb1ed9f 100644 --- a/web/src/routes/(user)/people/[personId]/[[photos=photos]]/[[assetId=id]]/+page.svelte +++ b/web/src/routes/(user)/people/[personId]/[[photos=photos]]/[[assetId=id]]/+page.svelte @@ -368,6 +368,8 @@ singleSelect={viewMode === PersonPageViewMode.SELECT_PERSON} onSelect={handleSelectFeaturePhoto} onEscape={handleEscape} + onKeyboardDelete={() => updateAssetCount()} + onKeyboardArchive={() => updateAssetCount()} > {#if viewMode === PersonPageViewMode.VIEW_ASSETS}