Page MenuHomePhorge

D9744.1768234670.diff
No OneTemporary

Size
5 KB
Referenced Files
None
Subscribers
None

D9744.1768234670.diff

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
@@ -3,6 +3,7 @@
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,
@@ -21,23 +22,7 @@
}
function keyForUpdateData(updateData: UpdateData): ?string {
- if (
- updateData.type === updateTypes.UPDATE_THREAD ||
- updateData.type === updateTypes.UPDATE_THREAD_READ_STATUS ||
- updateData.type === updateTypes.DELETE_THREAD ||
- updateData.type === updateTypes.JOIN_THREAD
- ) {
- return updateData.threadID;
- } else if (updateData.type === updateTypes.UPDATE_ENTRY) {
- return updateData.entryID;
- } else if (updateData.type === updateTypes.UPDATE_CURRENT_USER) {
- return updateData.userID;
- } else if (updateData.type === updateTypes.DELETE_ACCOUNT) {
- return updateData.deletedUserID;
- } else if (updateData.type === updateTypes.UPDATE_USER) {
- return updateData.updatedUserID;
- }
- return null;
+ return updateSpecs[updateData.type].keyForUpdateData?.(updateData) ?? null;
}
function keyForUpdateInfo(updateInfo: ServerUpdateInfo): ?string {
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
@@ -76,6 +76,9 @@
updateTypes.DELETE_ACCOUNT,
updateTypes.UPDATE_USER,
]),
+ keyForUpdateData(data: AccountDeletionUpdateData) {
+ return data.deletedUserID;
+ },
typesOfReplacedUpdatesForMatchingKey: 'all_types',
infoValidator: tShape<AccountDeletionUpdateInfo>({
type: tNumber(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
@@ -64,6 +64,9 @@
};
},
deleteCondition: 'all_types',
+ keyForUpdateData(data: ThreadDeletionUpdateData) {
+ return data.threadID;
+ },
typesOfReplacedUpdatesForMatchingKey: 'all_types',
infoValidator: tShape<ThreadDeletionUpdateInfo>({
type: tNumber(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
@@ -152,6 +152,9 @@
};
},
deleteCondition: 'all_types',
+ keyForUpdateData(data: ThreadJoinUpdateData) {
+ return data.threadID;
+ },
typesOfReplacedUpdatesForMatchingKey: 'all_types',
infoValidator: tShape<ThreadJoinUpdateInfo>({
type: tNumber(updateTypes.JOIN_THREAD),
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
@@ -58,6 +58,9 @@
};
},
deleteCondition: new Set([updateTypes.UPDATE_CURRENT_USER]),
+ keyForUpdateData(data: CurrentUserUpdateData) {
+ return data.userID;
+ },
typesOfReplacedUpdatesForMatchingKey: 'all_types',
infoValidator: tShape<CurrentUserUpdateInfo>({
type: tNumber(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
@@ -74,6 +74,9 @@
};
},
deleteCondition: 'all_types',
+ keyForUpdateData(data: EntryUpdateData) {
+ return data.entryID;
+ },
typesOfReplacedUpdatesForMatchingKey: 'all_types',
infoValidator: tShape<EntryUpdateInfo>({
type: tNumber(updateTypes.UPDATE_ENTRY),
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
@@ -91,6 +91,7 @@
params: UpdateInfoFromRawInfoParams,
) => ?UpdateInfo,
+deleteCondition: ?UpdateTypes,
+ +keyForUpdateData?: (data: Data) => string,
+typesOfReplacedUpdatesForMatchingKey: ?UpdateTypes,
+infoValidator: TType<UpdateInfo>,
};
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
@@ -72,6 +72,9 @@
};
},
deleteCondition: new Set([updateTypes.UPDATE_THREAD_READ_STATUS]),
+ keyForUpdateData(data: ThreadReadStatusUpdateData) {
+ return data.threadID;
+ },
typesOfReplacedUpdatesForMatchingKey: 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
@@ -93,6 +93,9 @@
updateTypes.UPDATE_THREAD,
updateTypes.UPDATE_THREAD_READ_STATUS,
]),
+ keyForUpdateData(data: ThreadUpdateData) {
+ return data.threadID;
+ },
typesOfReplacedUpdatesForMatchingKey: new Set([
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
@@ -43,6 +43,9 @@
};
},
deleteCondition: new Set([updateTypes.UPDATE_USER]),
+ keyForUpdateData(data: UserUpdateData) {
+ return data.updatedUserID;
+ },
typesOfReplacedUpdatesForMatchingKey: null,
infoValidator: tShape<UserUpdateInfo>({
type: tNumber(updateTypes.UPDATE_USER),

File Metadata

Mime Type
text/plain
Expires
Mon, Jan 12, 4:17 PM (10 h, 36 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5923769
Default Alt Text
D9744.1768234670.diff (5 KB)

Event Timeline