Browse Source

fix(web): runtime issue (#5493)

Jason Rasmussen 1 year ago
parent
commit
05e9697dff
1 changed files with 11 additions and 8 deletions
  1. 11 8
      web/src/lib/stores/assets.store.ts

+ 11 - 8
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 });
         }
       }),
     );