Page MenuHomePhabricator

D13215.diff
No OneTemporary

D13215.diff

diff --git a/lib/shared/dm-ops/change-thread-settings-spec.js b/lib/shared/dm-ops/change-thread-settings-spec.js
--- a/lib/shared/dm-ops/change-thread-settings-spec.js
+++ b/lib/shared/dm-ops/change-thread-settings-spec.js
@@ -14,7 +14,10 @@
import type { MessageData, RawMessageInfo } from '../../types/message-types';
import { messageTypes } from '../../types/message-types-enum.js';
import type { ChangeSettingsMessageData } from '../../types/messages/change-settings.js';
-import type { RawThreadInfo } from '../../types/minimally-encoded-thread-permissions-types.js';
+import type {
+ RawThreadInfo,
+ ThickRawThreadInfo,
+} from '../../types/minimally-encoded-thread-permissions-types.js';
import { updateTypes } from '../../types/update-types-enum.js';
import type { ClientUpdateInfo } from '../../types/update-types.js';
import { values } from '../../utils/objects.js';
@@ -100,11 +103,10 @@
const { time, messageIDsPrefix } = dmOperation;
const threadID = getThreadIDFromChangeThreadSettingsDMOp(dmOperation);
- let threadInfoToUpdate: ?RawThreadInfo = utilities.threadInfos[threadID];
+ const threadInfo: ?RawThreadInfo = utilities.threadInfos[threadID];
const updateInfos: Array<ClientUpdateInfo> = [];
const rawMessageInfos: Array<RawMessageInfo> = [];
- invariant(threadInfoToUpdate?.thick, 'Thread should be thick');
const { fieldNameToMessageData, threadInfoUpdate } =
createChangeSettingsMessageDatasAndUpdate(dmOperation);
@@ -120,10 +122,21 @@
),
);
- threadInfoToUpdate = {
- ...threadInfoToUpdate,
- ...threadInfoUpdate,
- };
+ invariant(threadInfo?.thick, 'Thread should be thick');
+ let threadInfoToUpdate: ThickRawThreadInfo = threadInfo;
+ for (const fieldName in threadInfoUpdate) {
+ const timestamp = threadInfoToUpdate.timestamps[fieldName];
+ if (timestamp < time) {
+ threadInfoToUpdate = {
+ ...threadInfoToUpdate,
+ [fieldName]: threadInfoUpdate[fieldName],
+ timestamps: {
+ ...threadInfoToUpdate.timestamps,
+ [fieldName]: time,
+ },
+ };
+ }
+ }
if (fieldNameToMessageDataPairs.length > 0) {
updateInfos.push({

File Metadata

Mime Type
text/plain
Expires
Sat, Nov 23, 12:35 AM (17 h, 53 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2566855
Default Alt Text
D13215.diff (2 KB)

Event Timeline