diff --git a/keyserver/src/creators/update-creator.js b/keyserver/src/creators/update-creator.js --- a/keyserver/src/creators/update-creator.js +++ b/keyserver/src/creators/update-creator.js @@ -538,33 +538,23 @@ if (!key) { mergedUpdates.push(updateInfo); continue; - } else if ( - updateInfo.type === updateTypes.DELETE_THREAD || - updateInfo.type === updateTypes.JOIN_THREAD || - updateInfo.type === updateTypes.DELETE_ACCOUNT - ) { - updateForKey.set(key, updateInfo); - continue; } const currentUpdateInfo = updateForKey.get(key); - if (!currentUpdateInfo) { - updateForKey.set(key, updateInfo); - } else if ( - updateInfo.type === updateTypes.UPDATE_THREAD && - currentUpdateInfo.type === updateTypes.UPDATE_THREAD_READ_STATUS + if ( + !currentUpdateInfo || + updateInfo.type === updateTypes.DELETE_THREAD || + updateInfo.type === updateTypes.JOIN_THREAD || + updateInfo.type === updateTypes.DELETE_ACCOUNT || + updateInfo.type === updateTypes.UPDATE_ENTRY || + updateInfo.type === updateTypes.UPDATE_CURRENT_USER ) { - // UPDATE_THREAD trumps UPDATE_THREAD_READ_STATUS - // Note that we keep the oldest UPDATE_THREAD updateForKey.set(key, updateInfo); } else if ( - updateInfo.type === updateTypes.UPDATE_THREAD_READ_STATUS && - currentUpdateInfo.type === updateTypes.UPDATE_THREAD_READ_STATUS + (updateInfo.type === updateTypes.UPDATE_THREAD && + currentUpdateInfo.type === updateTypes.UPDATE_THREAD_READ_STATUS) || + (updateInfo.type === updateTypes.UPDATE_THREAD_READ_STATUS && + currentUpdateInfo.type === updateTypes.UPDATE_THREAD_READ_STATUS) ) { - // If we only have UPDATE_THREAD_READ_STATUS, keep the most recent - updateForKey.set(key, updateInfo); - } else if (updateInfo.type === updateTypes.UPDATE_ENTRY) { - updateForKey.set(key, updateInfo); - } else if (updateInfo.type === updateTypes.UPDATE_CURRENT_USER) { updateForKey.set(key, updateInfo); } }