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 @@ -8,7 +8,10 @@ keyForUpdateInfo, rawUpdateInfoFromUpdateData, } from 'lib/shared/update-utils.js'; -import type { UpdateInfosRawData } from 'lib/shared/updates/update-spec.js'; +import type { + UpdateInfosRawData, + DeleteConditionType, +} from 'lib/shared/updates/update-spec.js'; import { updateSpecs } from 'lib/shared/updates/update-specs.js'; import { type CalendarQuery, @@ -69,7 +72,7 @@ type DeleteCondition = { +userID: string, +target: ?string, - +types: 'all_types' | $ReadOnlySet, + +types: DeleteConditionType, }; export type ViewerInfo = @@ -605,28 +608,8 @@ } function getDeleteCondition(updateData: UpdateData): ?DeleteCondition { - let types; - if (updateData.type === updateTypes.DELETE_ACCOUNT) { - types = new Set([updateTypes.DELETE_ACCOUNT, updateTypes.UPDATE_USER]); - } else if (updateData.type === updateTypes.UPDATE_THREAD) { - types = new Set([ - updateTypes.UPDATE_THREAD, - updateTypes.UPDATE_THREAD_READ_STATUS, - ]); - } else if (updateData.type === updateTypes.UPDATE_THREAD_READ_STATUS) { - types = new Set([updateTypes.UPDATE_THREAD_READ_STATUS]); - } else if ( - updateData.type === updateTypes.DELETE_THREAD || - updateData.type === updateTypes.JOIN_THREAD - ) { - types = 'all_types'; - } else if (updateData.type === updateTypes.UPDATE_ENTRY) { - types = 'all_types'; - } else if (updateData.type === updateTypes.UPDATE_CURRENT_USER) { - types = new Set([updateTypes.UPDATE_CURRENT_USER]); - } else if (updateData.type === updateTypes.UPDATE_USER) { - types = new Set([updateTypes.UPDATE_USER]); - } else { + const types = updateSpecs[updateData.type].deleteCondition; + if (!types) { return null; } 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 @@ -34,4 +34,5 @@ deviceToken: info.deviceToken, }; }, + deleteCondition: null, }); 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 @@ -69,4 +69,8 @@ deletedUserID: info.deletedUserID, }; }, + deleteCondition: new Set([ + updateTypes.DELETE_ACCOUNT, + updateTypes.UPDATE_USER, + ]), }); 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 @@ -60,4 +60,5 @@ threadID: info.threadID, }; }, + deleteCondition: 'all_types', }); 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 @@ -139,4 +139,5 @@ rawEntryInfos, }; }, + deleteCondition: 'all_types', }); 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 @@ -52,4 +52,5 @@ currentUserInfo: currentUserInfoResult, }; }, + deleteCondition: new Set([updateTypes.UPDATE_CURRENT_USER]), }); 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 @@ -68,4 +68,5 @@ entryInfo, }; }, + deleteCondition: 'all_types', }); 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 @@ -12,6 +12,7 @@ FetchMessageInfosResult, } from '../../types/message-types.js'; import type { RawThreadInfos } from '../../types/thread-types.js'; +import type { UpdateType } from '../../types/update-types-enum.js'; import type { ClientUpdateInfo, RawUpdateInfo, @@ -42,6 +43,8 @@ }, }; +export type DeleteConditionType = 'all_types' | $ReadOnlySet; + export type UpdateSpec< UpdateInfo: ClientUpdateInfo, RawInfo: RawUpdateInfo, @@ -85,4 +88,5 @@ info: RawInfo, params: UpdateInfoFromRawInfoParams, ) => ?UpdateInfo, + +deleteCondition: ?DeleteConditionType, }; 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 @@ -68,4 +68,5 @@ unread: info.unread, }; }, + deleteCondition: new Set([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 @@ -84,4 +84,8 @@ threadInfo, }; }, + deleteCondition: new Set([ + updateTypes.UPDATE_THREAD, + updateTypes.UPDATE_THREAD_READ_STATUS, + ]), }); 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 @@ -39,4 +39,5 @@ updatedUserID: info.updatedUserID, }; }, + deleteCondition: new Set([updateTypes.UPDATE_USER]), });