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 @@ -5,10 +5,12 @@ import uuid from 'uuid'; import { dmOpSpecs } from './dm-op-specs.js'; +import type { DMOperationSpecification } 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 { usePeerToPeerCommunication } from '../../tunnelbroker/peer-to-peer-context.js'; import type { MessageSourceMetadata } from '../../types/db-ops-types.js'; import { type DMOperation, @@ -108,4 +110,19 @@ ); } -export { useProcessDMOperation }; +function useProcessAndSendDMOperation(): ( + dmOperationSpecification: DMOperationSpecification, +) => Promise { + const processDMOps = useProcessDMOperation(); + const { sendDMOperation } = usePeerToPeerCommunication(); + + return React.useCallback( + async (dmOperationSpecification: DMOperationSpecification) => { + await processDMOps(dmOperationSpecification.op); + await sendDMOperation(dmOperationSpecification); + }, + [processDMOps, sendDMOperation], + ); +} + +export { useProcessDMOperation, useProcessAndSendDMOperation };