diff --git a/lib/shared/update-utils.js b/lib/shared/update-utils.js --- a/lib/shared/update-utils.js +++ b/lib/shared/update-utils.js @@ -1,10 +1,8 @@ // @flow -import invariant from 'invariant'; import _maxBy from 'lodash/fp/maxBy.js'; import { updateSpecs } from './updates/update-specs.js'; -import { updateTypes } from '../types/update-types-enum.js'; import { type ServerUpdateInfo, type UpdateData, @@ -29,78 +27,11 @@ return updateSpecs[updateInfo.type].keyForUpdateInfo?.(updateInfo) ?? null; } -// ESLint doesn't recognize that invariant always throws -// eslint-disable-next-line consistent-return function rawUpdateInfoFromUpdateData( updateData: UpdateData, id: string, ): RawUpdateInfo { - if (updateData.type === updateTypes.DELETE_ACCOUNT) { - return { - type: updateTypes.DELETE_ACCOUNT, - id, - time: updateData.time, - deletedUserID: updateData.deletedUserID, - }; - } else if (updateData.type === updateTypes.UPDATE_THREAD) { - return { - type: updateTypes.UPDATE_THREAD, - id, - time: updateData.time, - threadID: updateData.threadID, - }; - } else if (updateData.type === updateTypes.UPDATE_THREAD_READ_STATUS) { - return { - type: updateTypes.UPDATE_THREAD_READ_STATUS, - id, - time: updateData.time, - threadID: updateData.threadID, - unread: updateData.unread, - }; - } else if (updateData.type === updateTypes.DELETE_THREAD) { - return { - type: updateTypes.DELETE_THREAD, - id, - time: updateData.time, - threadID: updateData.threadID, - }; - } else if (updateData.type === updateTypes.JOIN_THREAD) { - return { - type: updateTypes.JOIN_THREAD, - id, - time: updateData.time, - threadID: updateData.threadID, - }; - } else if (updateData.type === updateTypes.BAD_DEVICE_TOKEN) { - return { - type: updateTypes.BAD_DEVICE_TOKEN, - id, - time: updateData.time, - deviceToken: updateData.deviceToken, - }; - } else if (updateData.type === updateTypes.UPDATE_ENTRY) { - return { - type: updateTypes.UPDATE_ENTRY, - id, - time: updateData.time, - entryID: updateData.entryID, - }; - } else if (updateData.type === updateTypes.UPDATE_CURRENT_USER) { - return { - type: updateTypes.UPDATE_CURRENT_USER, - id, - time: updateData.time, - }; - } else if (updateData.type === updateTypes.UPDATE_USER) { - return { - type: updateTypes.UPDATE_USER, - id, - time: updateData.time, - updatedUserID: updateData.updatedUserID, - }; - } else { - invariant(false, `unrecognized updateType ${updateData.type}`); - } + return updateSpecs[updateData.type].rawInfoFromData(updateData, id); } export { diff --git a/lib/shared/updates/bad-device-token-spec.js b/lib/shared/updates/bad-device-token-spec.js --- a/lib/shared/updates/bad-device-token-spec.js +++ b/lib/shared/updates/bad-device-token-spec.js @@ -29,6 +29,14 @@ const { deviceToken } = data; return JSON.stringify({ deviceToken }); }, + rawInfoFromData(data: BadDeviceTokenUpdateData, id: string) { + return { + type: updateTypes.BAD_DEVICE_TOKEN, + id, + time: data.time, + deviceToken: data.deviceToken, + }; + }, updateInfoFromRawInfo(info: BadDeviceTokenRawUpdateInfo) { return { type: updateTypes.BAD_DEVICE_TOKEN, diff --git a/lib/shared/updates/delete-account-spec.js b/lib/shared/updates/delete-account-spec.js --- a/lib/shared/updates/delete-account-spec.js +++ b/lib/shared/updates/delete-account-spec.js @@ -64,6 +64,14 @@ updateContentForServerDB(data: AccountDeletionUpdateData) { return JSON.stringify({ deletedUserID: data.deletedUserID }); }, + rawInfoFromData(data: AccountDeletionUpdateData, id: string) { + return { + type: updateTypes.DELETE_ACCOUNT, + id, + time: data.time, + deletedUserID: data.deletedUserID, + }; + }, updateInfoFromRawInfo(info: AccountDeletionRawUpdateInfo) { return { type: updateTypes.DELETE_ACCOUNT, diff --git a/lib/shared/updates/delete-thread-spec.js b/lib/shared/updates/delete-thread-spec.js --- a/lib/shared/updates/delete-thread-spec.js +++ b/lib/shared/updates/delete-thread-spec.js @@ -55,6 +55,14 @@ const { threadID } = data; return JSON.stringify({ threadID }); }, + rawInfoFromData(data: ThreadDeletionUpdateData, id: string) { + return { + type: updateTypes.DELETE_THREAD, + id, + time: data.time, + threadID: data.threadID, + }; + }, updateInfoFromRawInfo(info: ThreadDeletionRawUpdateInfo) { return { type: updateTypes.DELETE_THREAD, diff --git a/lib/shared/updates/join-thread-spec.js b/lib/shared/updates/join-thread-spec.js --- a/lib/shared/updates/join-thread-spec.js +++ b/lib/shared/updates/join-thread-spec.js @@ -117,6 +117,14 @@ detailedThreadID: update.threadID, }; }, + rawInfoFromData(data: ThreadJoinUpdateData, id: string) { + return { + type: updateTypes.JOIN_THREAD, + id, + time: data.time, + threadID: data.threadID, + }; + }, updateInfoFromRawInfo( info: ThreadJoinRawUpdateInfo, params: UpdateInfoFromRawInfoParams, diff --git a/lib/shared/updates/update-current-user-spec.js b/lib/shared/updates/update-current-user-spec.js --- a/lib/shared/updates/update-current-user-spec.js +++ b/lib/shared/updates/update-current-user-spec.js @@ -42,6 +42,13 @@ currentUser: true, }; }, + rawInfoFromData(data: CurrentUserUpdateData, id: string) { + return { + type: updateTypes.UPDATE_CURRENT_USER, + id, + time: data.time, + }; + }, updateInfoFromRawInfo( info: CurrentUserRawUpdateInfo, params: UpdateInfoFromRawInfoParams, diff --git a/lib/shared/updates/update-entry-spec.js b/lib/shared/updates/update-entry-spec.js --- a/lib/shared/updates/update-entry-spec.js +++ b/lib/shared/updates/update-entry-spec.js @@ -50,6 +50,14 @@ entryID: update.entryID, }; }, + rawInfoFromData(data: EntryUpdateData, id: string) { + return { + type: updateTypes.UPDATE_ENTRY, + id, + time: data.time, + entryID: data.entryID, + }; + }, updateInfoFromRawInfo( info: EntryRawUpdateInfo, params: UpdateInfoFromRawInfoParams, diff --git a/lib/shared/updates/update-spec.js b/lib/shared/updates/update-spec.js --- a/lib/shared/updates/update-spec.js +++ b/lib/shared/updates/update-spec.js @@ -86,6 +86,7 @@ +currentUser?: boolean, +userID?: string, }, + +rawInfoFromData: (data: Data, id: string) => RawInfo, +updateInfoFromRawInfo: ( info: RawInfo, params: UpdateInfoFromRawInfoParams, diff --git a/lib/shared/updates/update-thread-read-status-spec.js b/lib/shared/updates/update-thread-read-status-spec.js --- a/lib/shared/updates/update-thread-read-status-spec.js +++ b/lib/shared/updates/update-thread-read-status-spec.js @@ -62,6 +62,15 @@ const { threadID, unread } = data; return JSON.stringify({ threadID, unread }); }, + rawInfoFromData(data: ThreadReadStatusUpdateData, id: string) { + return { + type: updateTypes.UPDATE_THREAD_READ_STATUS, + id, + time: data.time, + threadID: data.threadID, + unread: data.unread, + }; + }, updateInfoFromRawInfo(info: ThreadReadStatusRawUpdateInfo) { return { type: updateTypes.UPDATE_THREAD_READ_STATUS, diff --git a/lib/shared/updates/update-thread-spec.js b/lib/shared/updates/update-thread-spec.js --- a/lib/shared/updates/update-thread-spec.js +++ b/lib/shared/updates/update-thread-spec.js @@ -68,6 +68,14 @@ threadID: update.threadID, }; }, + rawInfoFromData(data: ThreadUpdateData, id: string) { + return { + type: updateTypes.UPDATE_THREAD, + id, + time: data.time, + threadID: data.threadID, + }; + }, updateInfoFromRawInfo( info: ThreadRawUpdateInfo, params: UpdateInfoFromRawInfoParams, diff --git a/lib/shared/updates/update-user-spec.js b/lib/shared/updates/update-user-spec.js --- a/lib/shared/updates/update-user-spec.js +++ b/lib/shared/updates/update-user-spec.js @@ -34,6 +34,14 @@ const { updatedUserID } = data; return JSON.stringify({ updatedUserID }); }, + rawInfoFromData(data: UserUpdateData, id: string) { + return { + type: updateTypes.UPDATE_USER, + id, + time: data.time, + updatedUserID: data.updatedUserID, + }; + }, updateInfoFromRawInfo(info: UserRawUpdateInfo) { return { type: updateTypes.UPDATE_USER,