Jake Vanderwerf
2026-02-11 427efb903c2f23c5ddc05ce75d869fdb187d771d
assets/js/concise/CRUD.js
@@ -12,6 +12,7 @@
      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;
@@ -350,6 +351,21 @@
                  });
               }
            }
            if (event === 'sent-to-queue' && data.field) {
               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() {
@@ -496,22 +512,19 @@
            && data.status === 'completed') {
            this.store.clearCache();
         }
         console.log('CRUD.js queue subscription');
         console.log(event, data);
         if (event === 'operation-status'
            && data.status === 'completed'
            && data.endpoint === 'uploads/groups') {
            console.log('Grouped Uploads completed');
            if (data.result && data.result.group_mappings) {
               this.handleGroupMappings(data.result.group_mappings);
            }
            console.log('Cleared local cache. Refresh to see changes');
            this.store.clearCache();
         }
         if (event === 'operation-status'
            && data.status === 'completed'
            && data.type === 'content_update') {
            console.log('Cleared local cache. Refresh to see changes');
            this.store.clearCache();
            // Check for result data (from ContentExecutor)
@@ -810,6 +823,13 @@
      }
      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];
         }
      }
      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')) {
@@ -1235,7 +1255,6 @@
         await this.handleBackup();
      }
      const changes = await this.changesStore.getAll();
      console.log('Saving Changes: ', changes);
      if (changes.length === 0) return;
      if (title === '') {
@@ -1472,10 +1491,6 @@
      let uploader = window.jvbUploads;
      let field = uploader.fields.get(fieldId);
      console.log(posts);
      console.log(field);
      let added = [];
      posts.forEach(post => {
         const placeholderPost = {
@@ -1540,7 +1555,6 @@
   }
   handleGroupMappings(mappings) {
      console.log('[CRUD] Applying group mappings:', mappings);
      // mappings = { "group_abc123": 456, "group_def456": 789 }
      for (const [groupId, postId] of Object.entries(mappings)) {