diff --git a/lib/reducers/message-reducer.js b/lib/reducers/message-reducer.js --- a/lib/reducers/message-reducer.js +++ b/lib/reducers/message-reducer.js @@ -1875,7 +1875,17 @@ outboundP2PMessages, composableMessageID, } = action.payload; - if (rawMessageInfos.length === 0 && updateInfos.length === 0) { + + const sendingComposableDMMessageToPeers = + composableMessageID && + outboundP2PMessages && + outboundP2PMessages.length > 0; + + if ( + rawMessageInfos.length === 0 && + updateInfos.length === 0 && + !sendingComposableDMMessageToPeers + ) { return { messageStoreOperations: [], messageStore }; } @@ -1894,12 +1904,16 @@ ); if ( + !sendingComposableDMMessageToPeers || !composableMessageID || !outboundP2PMessages || - outboundP2PMessages.length === 0 + // This is a case when a message is retried, + // no additional changes are required. + !!messageStore.local[composableMessageID] ) { return { messageStoreOperations, messageStore: newMessageStore }; } + // Messages to other peers that can be retried from UI, // we need to track statuses of each one. const outboundP2PMessageIDs = outboundP2PMessages.map(msg => msg.messageID); @@ -1908,6 +1922,9 @@ payload: { id: composableMessageID, localMessageInfo: { + // Setting it to `false` because sending a message is in progress. + // It will be set to `true` after we fail to queue at least one + // message on Tunnelbroker, or this entry will be removed on success. sendFailed: false, outboundP2PMessageIDs, },