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 @@ -9,16 +9,22 @@ OutboundDMOperationSpecification, DMOperationSpecification, } from './dm-op-utils.js'; +import { + createMessagesToPeersFromDMOp, + dmOperationSpecificationTypes, +} from './dm-op-utils.js'; import { useLoggedInUserInfo } from '../../hooks/account-hooks.js'; import { useGetLatestMessageEdit } from '../../hooks/latest-message-edit.js'; import { useDispatchWithMessageSource } from '../../hooks/ops-hooks.js'; import { mergeUpdatesWithMessageInfos } from '../../reducers/message-reducer.js'; +import { getAllPeerUserIDAndDeviceIDs } from '../../selectors/user-selectors.js'; import { usePeerToPeerCommunication } from '../../tunnelbroker/peer-to-peer-context.js'; import { processDMOpsActionType, queueDMOpsActionType, } from '../../types/dm-ops.js'; import type { RawThreadInfo } from '../../types/minimally-encoded-thread-permissions-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'; import { updateTypes } from '../../types/update-types-enum.js'; @@ -43,6 +49,9 @@ const dispatchWithMessageSource = useDispatchWithMessageSource(); const loggedInUserInfo = useLoggedInUserInfo(); const viewerID = loggedInUserInfo?.id; + const allPeerUserIDAndDeviceIDs = useSelector(getAllPeerUserIDAndDeviceIDs); + const currentUserInfo = useSelector(state => state.currentUserInfo); + return React.useCallback( async (dmOperationSpecification: DMOperationSpecification) => { if (!viewerID) { @@ -50,6 +59,17 @@ return; } + let outboundP2PMessages: ?$ReadOnlyArray = null; + if ( + dmOperationSpecification.type === dmOperationSpecificationTypes.OUTBOUND + ) { + outboundP2PMessages = await createMessagesToPeersFromDMOp( + dmOperationSpecification, + allPeerUserIDAndDeviceIDs, + currentUserInfo, + ); + } + const { op: dmOp, metadata } = dmOperationSpecification; const processingCheckResult = dmOpSpecs[dmOp.type].canBeProcessed( dmOp, @@ -148,13 +168,20 @@ payload: { rawMessageInfos, updateInfos, - outboundP2PMessages: null, + outboundP2PMessages, }, }, metadata, ); }, - [viewerID, utilities, dispatchWithMessageSource, threadInfos], + [ + viewerID, + utilities, + dispatchWithMessageSource, + allPeerUserIDAndDeviceIDs, + currentUserInfo, + threadInfos, + ], ); }