From e29267359ec463d65b737a54de74c4fe414f1902 Mon Sep 17 00:00:00 2001 From: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> Date: Mon, 8 Jun 2026 18:07:57 +0200 Subject: [PATCH] fix: detail panel faces reactivity issues (#28910) --- web/src/lib/components/asset-viewer/DetailPanel.svelte | 3 +++ .../lib/components/asset-viewer/face-editor/FaceEditor.svelte | 2 ++ web/src/lib/stores/face.svelte.ts | 1 + 3 files changed, 6 insertions(+) diff --git a/web/src/lib/components/asset-viewer/DetailPanel.svelte b/web/src/lib/components/asset-viewer/DetailPanel.svelte index aa32f825a0..6766292766 100644 --- a/web/src/lib/components/asset-viewer/DetailPanel.svelte +++ b/web/src/lib/components/asset-viewer/DetailPanel.svelte @@ -33,6 +33,7 @@ import UserAvatar from '../shared-components/UserAvatar.svelte'; import AlbumListItemDetails from './AlbumListItemDetails.svelte'; import DetailPanelPeople from '$lib/components/asset-viewer/DetailPanelPeople.svelte'; + import { faceManager } from '$lib/stores/face.svelte'; interface Props { asset: AssetResponseDto; @@ -97,6 +98,8 @@ const handleRefreshPeople = async () => { asset = await getAssetInfo({ id: asset.id }); assetViewerManager.closeEditFacesPanel(); + faceManager.clear(); + await faceManager.getAssetFaces(asset.id); }; const getAssetFolderHref = (asset: AssetResponseDto) => { diff --git a/web/src/lib/components/asset-viewer/face-editor/FaceEditor.svelte b/web/src/lib/components/asset-viewer/face-editor/FaceEditor.svelte index 5ec423a9c4..09a908fe78 100644 --- a/web/src/lib/components/asset-viewer/face-editor/FaceEditor.svelte +++ b/web/src/lib/components/asset-viewer/face-editor/FaceEditor.svelte @@ -3,6 +3,7 @@ import ImageThumbnail from '$lib/components/assets/thumbnail/ImageThumbnail.svelte'; import { assetViewerManager } from '$lib/managers/asset-viewer-manager.svelte'; import FaceCreateTagModal from '$lib/modals/CreateFaceModal.svelte'; + import { faceManager } from '$lib/stores/face.svelte'; import { getPeopleThumbnailUrl } from '$lib/utils'; import { getNaturalSize, scaleToFit } from '$lib/utils/container-utils'; import { handleError } from '$lib/utils/handle-error'; @@ -326,6 +327,7 @@ }); await assetViewerManager.setAssetId(assetId); + faceManager.clear(); } catch (error) { handleError(error, 'Error tagging face'); } finally { diff --git a/web/src/lib/stores/face.svelte.ts b/web/src/lib/stores/face.svelte.ts index cfbffe0441..e7ab11bf3f 100644 --- a/web/src/lib/stores/face.svelte.ts +++ b/web/src/lib/stores/face.svelte.ts @@ -67,6 +67,7 @@ class FaceManager { clear() { this.#cleared = true; + assetCacheManager.clearFaceCache(); this.#data = []; } }