Jake Vanderwerf
2026-02-11 987e75c9cf720e97aea59b458d00312b9b657b23
assets/js/concise/CRUD.js
@@ -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);