Page MenuHomePhabricator

D13413.id44433.diff
No OneTemporary

D13413.id44433.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
@@ -8,6 +8,7 @@
ProcessDMOperationUtilities,
} from './dm-op-spec.js';
import type {
+ DMBlobOperation,
DMChangeThreadSettingsOperation,
DMThreadSettingsChanges,
} from '../../types/dm-ops.js';
@@ -20,6 +21,7 @@
} 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 { blobHashFromBlobServiceURI } from '../../utils/blob-service.js';
import { values } from '../../utils/objects.js';
import { rawMessageInfoFromMessageData } from '../message-utils.js';
@@ -105,6 +107,32 @@
return { fieldNameToMessageData, threadInfoUpdate };
}
+function getBlobOpsFromOperation(
+ dmOperation: DMChangeThreadSettingsOperation,
+ threadInfo: ?RawThreadInfo,
+): Array<DMBlobOperation> {
+ const ops: Array<DMBlobOperation> = [];
+
+ const prevAvatar = threadInfo?.avatar;
+ if (prevAvatar && prevAvatar.type === 'encrypted_image') {
+ ops.push({
+ type: 'remove_holder',
+ blobHash: blobHashFromBlobServiceURI(prevAvatar.blobURI),
+ dmOpType: 'inbound_and_outbound',
+ });
+ }
+
+ const { avatar } = dmOperation.changes;
+ if (avatar && avatar?.type === 'encrypted_image') {
+ ops.push({
+ type: 'establish_holder',
+ blobHash: blobHashFromBlobServiceURI(avatar.blobURI),
+ dmOpType: 'inbound_only',
+ });
+ }
+ return ops;
+}
+
const changeThreadSettingsSpec: DMOperationSpec<DMChangeThreadSettingsOperation> =
Object.freeze({
notificationsCreationData: async (
@@ -128,6 +156,8 @@
const { fieldNameToMessageData, threadInfoUpdate } =
createChangeSettingsMessageDatasAndUpdate(dmOperation);
+ const blobOps = getBlobOpsFromOperation(dmOperation, threadInfo);
+
const messageDataWithMessageInfoPairs = values(fieldNameToMessageData);
const rawMessageInfos = messageDataWithMessageInfoPairs.map(
({ rawMessageInfo }) => rawMessageInfo,
@@ -161,7 +191,7 @@
return {
rawMessageInfos,
updateInfos,
- blobOps: [],
+ blobOps,
};
},
canBeProcessed: async (

File Metadata

Mime Type
text/plain
Expires
Sun, Oct 20, 5:40 AM (20 h, 2 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2329329
Default Alt Text
D13413.id44433.diff (2 KB)

Event Timeline