diff --git a/src/flags.js b/src/flags.js index 00bce1d9bd..abc6220ef7 100644 --- a/src/flags.js +++ b/src/flags.js @@ -744,10 +744,14 @@ Flags.update = async function (flagId, uid, changeset) { // Retrieve existing flag data to compare for history-saving/reference purposes const tasks = []; + for (const prop of Object.keys(changeset)) { if (current[prop] === changeset[prop]) { delete changeset[prop]; - } else if (prop === 'state') { + } + } + for (const prop of Object.keys(changeset)) { + if (prop === 'state') { if (!Flags._states.has(changeset[prop])) { delete changeset[prop]; } else { @@ -760,7 +764,11 @@ Flags.update = async function (flagId, uid, changeset) { tasks.push(rescindNotifications(`flag:${current.type}:${current.targetId}`)); } } - } else if (prop === 'assignee') { + } + } + + for (const prop of Object.keys(changeset)) { + if (prop === 'assignee') { if (changeset[prop] === '') { tasks.push(db.sortedSetRemove(`flags:byAssignee:${changeset[prop]}`, flagId)); /* eslint-disable-next-line */ @@ -772,7 +780,6 @@ Flags.update = async function (flagId, uid, changeset) { } } } - if (!Object.keys(changeset).length) { return; }