Jake Vanderwerf
2026-02-11 f955b72d471f0f41ab01232aa3709c0391b0bed3
assets/js/concise/CRUD.js
@@ -12,7 +12,6 @@
      this.error = window.jvbError;
      this.populate = window.jvbPopulate;
      this.cache = new window.jvbCache(this.content);
      this.uploadedFields = new Set(); //tracks which upload fields are currently uploading; so don't send any of these changes to server
      this.activeItem = null;
      this.isTimeline = false;
@@ -356,16 +355,11 @@
               const fieldName = data.field.config.name;
               const itemId = data.field.config.itemID;
               if (itemId && fieldName) {
                  this.uploadedFields.add(`${itemId}_${fieldName}`);
                  if (this.changes.has(itemId)) {
                     delete this.changes.get(itemId)[fieldName];
                  }
               }
            }
            // if (event === 'upload_complete') {
            //    this.uploadedFields.delete(`${data['item_id']}_${data['field']}`);
            // }
         });
      }
      initModals() {
@@ -823,21 +817,6 @@
      }
      this.changes.get(itemId)[name] = value;
      for (const key of this.uploadedFields) {
         const [itemId, fieldName] = key.split('_');
         if (this.changes.has(itemId)) {
            delete this.changes.get(itemId)[fieldName];
         }
      }
      // 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')) {
@@ -1263,6 +1242,7 @@
         await this.handleBackup();
      }
      const changes = await this.changesStore.getAll();
      console.log('Saving Changes: ', changes);
      if (changes.length === 0) return;
      if (title === '') {
@@ -1274,17 +1254,10 @@
      changes.forEach(change => {
         let itemId = change.id;
         const { id, content, ...fields } = change;
         // 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 };
         }
         // Create a new object without the id field (don't mutate original!)
         const { id, ...changeWithoutId } = change;
         allChanges[itemId] = changeWithoutId;
         if (change.post_status && this.shouldRemoveItemUI(change.post_status)) {
            remove.push(itemId);