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 @@ -14,13 +14,16 @@ type DMOperation, processDMOpsActionType, queueDMOpsActionType, + scheduleP2PNotifsActionType, } from '../../types/dm-ops.js'; import { updateTypes } from '../../types/update-types-enum.js'; -import { useSelector } from '../../utils/redux-utils.js'; +import { useSelector, useDispatch } from '../../utils/redux-utils.js'; +import { messageDataFromRawMessageInfo } from '../message-utils.js'; function useProcessDMOperation(): ( dmOp: DMOperation, metadata: ?MessageSourceMetadata, + isSender?: boolean, ) => Promise { const fetchMessage = useGetLatestMessageEdit(); const threadInfos = useSelector(state => state.threadStore.threadInfos); @@ -34,10 +37,16 @@ ); const dispatchWithMessageSource = useDispatchWithMessageSource(); + const dispatch = useDispatch(); + const loggedInUserInfo = useLoggedInUserInfo(); const viewerID = loggedInUserInfo?.id; return React.useCallback( - async (dmOp: DMOperation, metadata: ?MessageSourceMetadata) => { + async ( + dmOp: DMOperation, + metadata: ?MessageSourceMetadata, + isSender?: boolean, + ) => { if (!viewerID) { console.log('ignored DMOperation because logged out'); return; @@ -103,8 +112,23 @@ }, metadata, ); + + if (!isSender) { + return; + } + + const notificationsCreationData = { + messageDatas: allNewMessageInfos.map(messageDataFromRawMessageInfo), + }; + + dispatch({ + type: scheduleP2PNotifsActionType, + payload: { + notificationsCreationData, + }, + }); }, - [viewerID, utilities, dispatchWithMessageSource], + [viewerID, utilities, dispatchWithMessageSource, dispatch], ); }