1
0
mirror of https://github.com/immich-app/immich.git synced 2025-06-27 05:11:11 +02:00

fix(web): detail panel out of sync when reopening (#11713)

* fix(web): detail panel out of sync when reopening

* extract event handler
This commit is contained in:
Michel Heusschen
2024-08-12 14:10:43 +02:00
committed by GitHub
parent b749a68349
commit c2965c4408
3 changed files with 43 additions and 17 deletions

View File

@ -83,7 +83,7 @@
let isLiked: ActivityResponseDto | null = null;
let numberOfComments: number;
let fullscreenElement: Element;
let unsubscribe: () => void;
let unsubscribes: (() => void)[] = [];
let zoomToggle = () => void 0;
let copyImage: () => Promise<void>;
@ -172,6 +172,12 @@
}
};
const onAssetUpdate = (assetUpdate: AssetResponseDto) => {
if (assetUpdate.id === asset.id) {
asset = assetUpdate;
}
};
$: {
if (isShared && asset.id) {
handlePromiseError(getFavorite());
@ -180,11 +186,11 @@
}
onMount(async () => {
unsubscribe = websocketEvents.on('on_upload_success', (assetUpdate) => {
if (assetUpdate.id === asset.id) {
asset = assetUpdate;
}
});
unsubscribes.push(
websocketEvents.on('on_upload_success', onAssetUpdate),
websocketEvents.on('on_asset_update', onAssetUpdate),
);
await navigate({ targetRoute: 'current', assetId: asset.id });
slideshowStateUnsubscribe = slideshowState.subscribe((value) => {
if (value === SlideshowState.PlaySlideshow) {
@ -225,7 +231,10 @@
if (shuffleSlideshowUnsubscribe) {
shuffleSlideshowUnsubscribe();
}
unsubscribe?.();
for (const unsubscribe of unsubscribes) {
unsubscribe();
}
});
$: {

View File

@ -7,7 +7,6 @@
import { locale } from '$lib/stores/preferences.store';
import { featureFlags } from '$lib/stores/server-config.store';
import { user } from '$lib/stores/user.store';
import { websocketEvents } from '$lib/stores/websocket';
import { getAssetThumbnailUrl, getPeopleThumbnailUrl, handlePromiseError, isSharedLink } from '$lib/utils';
import { delay, isFlipped } from '$lib/utils/asset-utils';
import {
@ -30,7 +29,7 @@
mdiAccountOff,
} from '@mdi/js';
import { DateTime } from 'luxon';
import { createEventDispatcher, onMount } from 'svelte';
import { createEventDispatcher } from 'svelte';
import { slide } from 'svelte/transition';
import { getByteUnitString } from '$lib/utils/byte-units';
import { handleError } from '$lib/utils/handle-error';
@ -99,14 +98,6 @@
$: unassignedFaces = asset.unassignedFaces || [];
onMount(() => {
return websocketEvents.on('on_asset_update', (assetUpdate) => {
if (assetUpdate.id === asset.id) {
asset = assetUpdate;
}
});
});
const dispatch = createEventDispatcher<{
close: void;
}>();