diff --git a/lib/shared/dm-ops/process-dm-ops.js b/lib/shared/dm-ops/process-dm-ops.js --- a/lib/shared/dm-ops/process-dm-ops.js +++ b/lib/shared/dm-ops/process-dm-ops.js @@ -27,6 +27,7 @@ type SendDMOpsPayload, } from '../../types/dm-ops.js'; import type { RawThreadInfo } from '../../types/minimally-encoded-thread-permissions-types.js'; +import type { DispatchMetadata } from '../../types/redux-types.js'; import type { OutboundP2PMessage } from '../../types/sqlite-types.js'; import { threadTypes } from '../../types/thread-types-enum.js'; import type { LegacyRawThreadInfo } from '../../types/thread-types.js'; @@ -38,6 +39,7 @@ function useProcessDMOperation(): ( dmOperationSpecification: DMOperationSpecification, + dmOpID: ?string, ) => Promise { const fetchMessage = useGetLatestMessageEdit(); const threadInfos = useSelector(state => state.threadStore.threadInfos); @@ -57,7 +59,10 @@ const currentUserInfo = useSelector(state => state.currentUserInfo); return React.useCallback( - async (dmOperationSpecification: DMOperationSpecification) => { + async ( + dmOperationSpecification: DMOperationSpecification, + dmOpID: ?string, + ) => { if (!viewerID) { console.log('ignored DMOperation because logged out'); return; @@ -74,7 +79,19 @@ ); } - const { op: dmOp, metadata } = dmOperationSpecification; + let dispatchMetadata: ?DispatchMetadata = + dmOperationSpecification.metadata; + if ( + dmOperationSpecification.type === + dmOperationSpecificationTypes.OUTBOUND && + dmOpID + ) { + dispatchMetadata = { + dmOpID, + }; + } + + const { op: dmOp } = dmOperationSpecification; const processingCheckResult = dmOpSpecs[dmOp.type].canBeProcessed( dmOp, viewerID, @@ -91,7 +108,7 @@ timestamp: Date.now(), }, }, - metadata, + dispatchMetadata, ); } return; @@ -186,7 +203,7 @@ messageIDWithoutAutoRetry, }, }, - metadata, + dispatchMetadata, ); }, [ @@ -209,8 +226,8 @@ return React.useCallback( async (dmOperationSpecification: OutboundDMOperationSpecification) => { - const { promise } = getDMOpsSendingPromise(); - await processDMOps(dmOperationSpecification); + const { promise, dmOpID } = getDMOpsSendingPromise(); + await processDMOps(dmOperationSpecification, dmOpID); if ( dmOperationSpecification.type ===