Jake Vanderwerf
2026-02-11 4074c1ef4775f1f45f5de16b1afab77a3d586427
assets/js/concise/CRUD.js
@@ -363,9 +363,9 @@
               }
            }
            if (event === 'upload_complete') {
               this.uploadedFields.delete(`${data['item_id']}_${data['field']}`);
            }
            // if (event === 'upload_complete') {
            //    this.uploadedFields.delete(`${data['item_id']}_${data['field']}`);
            // }
         });
      }
      initModals() {
@@ -830,6 +830,14 @@
         }
      }
      // Don't schedule if only base keys remain
      const change = this.changes.get(itemId);
      const realKeys = Object.keys(change).filter(k => k !== 'id' && k !== 'content');
      if (realKeys.length === 0) {
         this.changes.delete(itemId);
         return;
      }
      this.scheduleBackup();
      //Only send actual itemIds to server. If this is a recently uploaded item, just store changes for now
      if (typeof itemId === 'number' || !itemId.includes('group')) {
@@ -1266,10 +1274,17 @@
      changes.forEach(change => {
         let itemId = change.id;
         const { id, content, ...fields } = change;
         // Create a new object without the id field (don't mutate original!)
         const { id, ...changeWithoutId } = change;
         allChanges[itemId] = changeWithoutId;
         // Filter out uploaded fields
         for (const key of this.uploadedFields) {
            const [uid, fieldName] = key.split('_');
            if (uid === itemId) delete fields[fieldName];
         }
         if (Object.keys(fields).length > 0) {
            allChanges[itemId] = { content, ...fields };
         }
         if (change.post_status && this.shouldRemoveItemUI(change.post_status)) {
            remove.push(itemId);