| | |
| | | } |
| | | } |
| | | |
| | | // 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')) { |
| | |
| | | |
| | | 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); |