[local-sync, iso-core] Fix operations on Categories

Summary:
- Ensure delete deltas make it through to N1
- Don't fail if we can't find a category that needs to be deleted

Test Plan: local

Reviewers: juan, evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D3593
This commit is contained in:
Halla Moore 2017-01-05 15:55:11 -08:00
parent 4030d7cb3b
commit c7f8796409
5 changed files with 14 additions and 6 deletions

View file

@ -19,12 +19,12 @@ module.exports = (db, sequelize, {only, onCreatedTransaction} = {}) => {
name = 'metadata';
}
if (only && !only.includes(name)) {
if ((only && !only.includes(name)) || isTransaction($modelOptions)) {
return;
}
const changedFields = Object.keys(_changed)
if ((isTransaction($modelOptions) || changedFields.length === 0 || allIgnoredFields(changedFields))) {
if (event !== 'delete' && (changedFields.length === 0 || allIgnoredFields(changedFields))) {
return;
}
@ -50,5 +50,5 @@ module.exports = (db, sequelize, {only, onCreatedTransaction} = {}) => {
// NOTE: Hooking UPSERT requires Sequelize 4.x. We're
// on version 3 right now, but leaving this here for when we upgrade.
sequelize.addHook("afterUpsert", transactionLogger("modify"))
sequelize.addHook("afterDelete", transactionLogger("delete"))
sequelize.addHook("afterDestroy", transactionLogger("delete"))
}

View file

@ -12,7 +12,7 @@ class CreateCategoryIMAP extends SyncbackTask {
async run(db, imap) {
const {objectId, displayName} = this.syncbackRequestObject().props
await imap.addBox(displayName)
return {categoryId: objectId}
return {categoryServerId: objectId}
}
}
module.exports = CreateCategoryIMAP

View file

@ -12,6 +12,10 @@ class DeleteFolderIMAP extends SyncbackTask {
async run(db, imap) {
const folderId = this.syncbackRequestObject().props.folderId
const folder = await db.Folder.findById(folderId)
if (!folder) {
// Nothing to delete!
return null;
}
return imap.delBox(folder.name);
}
}

View file

@ -12,6 +12,10 @@ class DeleteLabelIMAP extends SyncbackTask {
async run(db, imap) {
const labelId = this.syncbackRequestObject().props.labelId
const label = await db.Label.findById(labelId)
if (!label) {
// Nothing to delete!
return null;
}
return imap.delBox(label.name);
}
}

View file

@ -12,8 +12,8 @@ class RenameLabelIMAP extends SyncbackTask {
async run(db, imap) {
const labelId = this.syncbackRequestObject().props.labelId
const newLabelName = this.syncbackRequestObject().props.displayName
const folder = await db.Label.findById(labelId)
return imap.renameBox(folder.name, newLabelName);
const label = await db.Label.findById(labelId)
return imap.renameBox(label.name, newLabelName);
}
}
module.exports = RenameLabelIMAP