From 05e9697dff2f1fd43b2eef326a6499625baea6ee Mon Sep 17 00:00:00 2001 From: Jason Rasmussen Date: Mon, 4 Dec 2023 20:29:35 -0500 Subject: [PATCH] fix(web): runtime issue (#5493) --- web/src/lib/stores/assets.store.ts | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/web/src/lib/stores/assets.store.ts b/web/src/lib/stores/assets.store.ts index add61979d..1134aa710 100644 --- a/web/src/lib/stores/assets.store.ts +++ b/web/src/lib/stores/assets.store.ts @@ -83,28 +83,31 @@ export class AssetStore { subscribe = this.store$.subscribe; + private addPendingChanges(...changes: PendingChange[]) { + // prevent websocket events from happening before local client events + setTimeout(() => { + this.pendingChanges.push(...changes); + this.processPendingChanges(); + }, 1_000); + } + connect() { this.unsubscribers.push( websocketStore.onUploadSuccess.subscribe((value) => { if (value) { - this.pendingChanges.push({ type: 'add', value }); - this.processPendingChanges(); + this.addPendingChanges({ type: 'add', value }); } }), websocketStore.onAssetTrash.subscribe((ids) => { if (ids) { - for (const id of ids) { - this.pendingChanges.push({ type: 'trash', value: id }); - } - this.processPendingChanges(); + this.addPendingChanges(...ids.map((id) => ({ type: 'trash', value: id }) as PendingChange)); } }), websocketStore.onAssetDelete.subscribe((value) => { if (value) { - this.pendingChanges.push({ type: 'delete', value }); - this.processPendingChanges(); + this.addPendingChanges({ type: 'delete', value }); } }), );