diff --git a/lib/shared/dm-ops/add-members-spec.js b/lib/shared/dm-ops/add-members-spec.js --- a/lib/shared/dm-ops/add-members-spec.js +++ b/lib/shared/dm-ops/add-members-spec.js @@ -54,6 +54,7 @@ return { rawMessageInfos: [], updateInfos: [], + blobOps: [], }; } const defaultRoleID = values(currentThreadInfo.roles).find(role => @@ -120,6 +121,7 @@ return { rawMessageInfos, updateInfos, + blobOps: [], }; }, canBeProcessed: async ( diff --git a/lib/shared/dm-ops/add-viewer-to-thread-members-spec.js b/lib/shared/dm-ops/add-viewer-to-thread-members-spec.js --- a/lib/shared/dm-ops/add-viewer-to-thread-members-spec.js +++ b/lib/shared/dm-ops/add-viewer-to-thread-members-spec.js @@ -58,6 +58,7 @@ return { rawMessageInfos: [], updateInfos: [], + blobOps: [], }; } @@ -118,7 +119,11 @@ rawEntryInfos: [], }, ]; - return { rawMessageInfos, updateInfos }; + return { + rawMessageInfos, + updateInfos, + blobOps: [], + }; }, canBeProcessed: async ( dmOperation: DMAddViewerToThreadMembersOperation, diff --git a/lib/shared/dm-ops/change-thread-read-status-spec.js b/lib/shared/dm-ops/change-thread-read-status-spec.js --- a/lib/shared/dm-ops/change-thread-read-status-spec.js +++ b/lib/shared/dm-ops/change-thread-read-status-spec.js @@ -34,6 +34,7 @@ return { rawMessageInfos: [], updateInfos: [], + blobOps: [], }; } @@ -61,6 +62,7 @@ return { rawMessageInfos: [], updateInfos, + blobOps: [], }; }, canBeProcessed: async ( 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 @@ -159,6 +159,7 @@ return { rawMessageInfos, updateInfos, + blobOps: [], }; }, canBeProcessed: async ( diff --git a/lib/shared/dm-ops/change-thread-subscription.js b/lib/shared/dm-ops/change-thread-subscription.js --- a/lib/shared/dm-ops/change-thread-subscription.js +++ b/lib/shared/dm-ops/change-thread-subscription.js @@ -27,6 +27,7 @@ return { updateInfos: [], rawMessageInfos: [], + blobOps: [], }; } @@ -75,7 +76,11 @@ }, ]; - return { updateInfos, rawMessageInfos: [] }; + return { + updateInfos, + rawMessageInfos: [], + blobOps: [], + }; }, canBeProcessed: async ( dmOperation: DMChangeThreadSubscriptionOperation, diff --git a/lib/shared/dm-ops/create-entry-spec.js b/lib/shared/dm-ops/create-entry-spec.js --- a/lib/shared/dm-ops/create-entry-spec.js +++ b/lib/shared/dm-ops/create-entry-spec.js @@ -66,6 +66,7 @@ return { rawMessageInfos, updateInfos: [entryUpdateInfo], + blobOps: [], }; }, canBeProcessed: async ( diff --git a/lib/shared/dm-ops/create-sidebar-spec.js b/lib/shared/dm-ops/create-sidebar-spec.js --- a/lib/shared/dm-ops/create-sidebar-spec.js +++ b/lib/shared/dm-ops/create-sidebar-spec.js @@ -164,6 +164,7 @@ return { rawMessageInfos: [], // included in updateInfos below updateInfos: [threadJoinUpdateInfo], + blobOps: [], }; }, canBeProcessed: async ( diff --git a/lib/shared/dm-ops/create-thread-spec.js b/lib/shared/dm-ops/create-thread-spec.js --- a/lib/shared/dm-ops/create-thread-spec.js +++ b/lib/shared/dm-ops/create-thread-spec.js @@ -204,6 +204,7 @@ return { rawMessageInfos: [], // included in updateInfos below updateInfos: [threadJoinUpdateInfo], + blobOps: [], }; }, canBeProcessed: async () => { diff --git a/lib/shared/dm-ops/delete-entry-spec.js b/lib/shared/dm-ops/delete-entry-spec.js --- a/lib/shared/dm-ops/delete-entry-spec.js +++ b/lib/shared/dm-ops/delete-entry-spec.js @@ -62,6 +62,7 @@ return { rawMessageInfos, updateInfos: [], + blobOps: [], }; } @@ -90,6 +91,7 @@ return { rawMessageInfos, updateInfos: [entryUpdateInfo], + blobOps: [], }; }, canBeProcessed: async ( diff --git a/lib/shared/dm-ops/edit-entry-spec.js b/lib/shared/dm-ops/edit-entry-spec.js --- a/lib/shared/dm-ops/edit-entry-spec.js +++ b/lib/shared/dm-ops/edit-entry-spec.js @@ -62,6 +62,7 @@ return { rawMessageInfos, updateInfos: [], + blobOps: [], }; } @@ -90,6 +91,7 @@ return { rawMessageInfos, updateInfos: [entryUpdateInfo], + blobOps: [], }; }, canBeProcessed: async ( diff --git a/lib/shared/dm-ops/join-thread-spec.js b/lib/shared/dm-ops/join-thread-spec.js --- a/lib/shared/dm-ops/join-thread-spec.js +++ b/lib/shared/dm-ops/join-thread-spec.js @@ -54,6 +54,7 @@ return { rawMessageInfos: [], updateInfos: [], + blobOps: [], }; } @@ -74,6 +75,7 @@ return { rawMessageInfos: joinThreadMessageInfos, updateInfos: [], + blobOps: [], }; } @@ -160,6 +162,7 @@ return { rawMessageInfos, updateInfos, + blobOps: [], }; }, canBeProcessed: async ( diff --git a/lib/shared/dm-ops/leave-thread-spec.js b/lib/shared/dm-ops/leave-thread-spec.js --- a/lib/shared/dm-ops/leave-thread-spec.js +++ b/lib/shared/dm-ops/leave-thread-spec.js @@ -94,6 +94,7 @@ utilities.threadInfos, ), ], + blobOps: [], }; } @@ -101,6 +102,7 @@ return { rawMessageInfos, updateInfos: [], + blobOps: [], }; } @@ -133,6 +135,7 @@ threadInfo: updatedThreadInfo, }, ], + blobOps: [], }; }, canBeProcessed: async ( diff --git a/lib/shared/dm-ops/remove-members-spec.js b/lib/shared/dm-ops/remove-members-spec.js --- a/lib/shared/dm-ops/remove-members-spec.js +++ b/lib/shared/dm-ops/remove-members-spec.js @@ -107,6 +107,7 @@ return { rawMessageInfos, updateInfos, + blobOps: [], }; }, canBeProcessed: async ( diff --git a/lib/shared/dm-ops/send-edit-message-spec.js b/lib/shared/dm-ops/send-edit-message-spec.js --- a/lib/shared/dm-ops/send-edit-message-spec.js +++ b/lib/shared/dm-ops/send-edit-message-spec.js @@ -40,6 +40,7 @@ return { rawMessageInfos, updateInfos: [], + blobOps: [], }; }, canBeProcessed: async ( diff --git a/lib/shared/dm-ops/send-multimedia-message-spec.js b/lib/shared/dm-ops/send-multimedia-message-spec.js --- a/lib/shared/dm-ops/send-multimedia-message-spec.js +++ b/lib/shared/dm-ops/send-multimedia-message-spec.js @@ -43,6 +43,7 @@ return { rawMessageInfos, updateInfos, + blobOps: [], }; }, canBeProcessed: async ( diff --git a/lib/shared/dm-ops/send-reaction-message-spec.js b/lib/shared/dm-ops/send-reaction-message-spec.js --- a/lib/shared/dm-ops/send-reaction-message-spec.js +++ b/lib/shared/dm-ops/send-reaction-message-spec.js @@ -42,6 +42,7 @@ return { rawMessageInfos, updateInfos: [], + blobOps: [], }; }, canBeProcessed: async ( diff --git a/lib/shared/dm-ops/send-text-message-spec.js b/lib/shared/dm-ops/send-text-message-spec.js --- a/lib/shared/dm-ops/send-text-message-spec.js +++ b/lib/shared/dm-ops/send-text-message-spec.js @@ -40,6 +40,7 @@ return { rawMessageInfos, updateInfos, + blobOps: [], }; }, canBeProcessed: async ( diff --git a/lib/types/dm-ops.js b/lib/types/dm-ops.js --- a/lib/types/dm-ops.js +++ b/lib/types/dm-ops.js @@ -3,6 +3,7 @@ import t, { type TInterface, type TUnion } from 'tcomb'; import { clientAvatarValidator, type ClientAvatar } from './avatar-types.js'; +import type { BlobOperation } from './holder-types.js'; import { type Media, mediaValidator } from './media-types.js'; import type { RawMessageInfo } from './message-types.js'; import type { NotificationsCreationData } from './notif-types.js'; @@ -486,9 +487,15 @@ dmEditEntryOperationValidator, ]); +export type DMBlobOperation = { + ...BlobOperation, + +dmOpType: 'inbound_only' | 'outbound_only' | 'inbound_and_outbound', +}; + export type DMOperationResult = { rawMessageInfos: Array, updateInfos: Array, + blobOps: Array, }; export const processDMOpsActionType = 'PROCESS_DM_OPS'; diff --git a/lib/types/holder-types.js b/lib/types/holder-types.js --- a/lib/types/holder-types.js +++ b/lib/types/holder-types.js @@ -17,3 +17,8 @@ +[blobHash: string]: HolderInfo, }, }; + +export type BlobOperation = { + +type: 'establish_holder' | 'remove_holder', + +blobHash: string, +};