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 @@ -99,12 +99,9 @@ processUpdatesActionType, } from '../types/update-types.js'; import { setNewSessionActionType } from '../utils/action-utils.js'; -import { isDev } from '../utils/dev-utils.js'; import { translateClientDBThreadMessageInfos } from '../utils/message-ops-utils.js'; -import { assertObjectsAreEqual } from '../utils/objects.js'; import { ashoatKeyserverID } from '../utils/validation-utils.js'; -const PROCESSED_MSG_STORE_INVARIANTS_DISABLED = !isDev; const _mapValuesWithKeys = _mapValues.convert({ cap: false }); // Input must already be ordered! @@ -136,22 +133,6 @@ ); } -function assertMessageStoreThreadsAreEqual( - processedMessageStore: MessageStore, - expectedMessageStore: MessageStore, - location: string, -) { - if (PROCESSED_MSG_STORE_INVARIANTS_DISABLED) { - return; - } - - assertObjectsAreEqual( - processedMessageStore.threads, - expectedMessageStore.threads, - `MessageStore.threads - ${location}`, - ); -} - const newThread = () => ({ messageIDs: [], startReached: false, @@ -325,7 +306,6 @@ newMessageInfos: $ReadOnlyArray, truncationStatus: { [threadID: string]: MessageTruncationStatus }, threadInfos: { +[threadID: string]: RawThreadInfo }, - actionType: string, ): MergeNewMessagesResult { const { messageStoreOperations: updateWithLatestThreadInfosOps, @@ -338,15 +318,10 @@ updateWithLatestThreadInfosOps, ); - assertMessageStoreThreadsAreEqual( - messageStoreAfterUpdateOps, - messageStoreUpdatedWithLatestThreadInfos, - `${actionType} | reassignment and filtering`, - ); - const updatedMessageStore = { ...messageStoreUpdatedWithLatestThreadInfos, messages: messageStoreAfterUpdateOps.messages, + threads: messageStoreAfterUpdateOps.threads, }; const localIDsToServerIDs: Map = new Map(); @@ -624,7 +599,7 @@ const messageStore = { messages: processedMessageStore.messages, - threads, + threads: processedMessageStore.threads, local, currentAsOf: { ...processedMessageStore.currentAsOf, @@ -632,12 +607,6 @@ }, }; - assertMessageStoreThreadsAreEqual( - processedMessageStore, - messageStore, - `${actionType} | processed`, - ); - return { messageStoreOperations: [ ...updateWithLatestThreadInfosOps, @@ -762,15 +731,13 @@ messageStoreOperations, ); - assertMessageStoreThreadsAreEqual( - processedMessageStore, - freshStore, - `${action.type} | fresh store`, - ); - return { messageStoreOperations, - messageStore: { ...freshStore, messages: processedMessageStore.messages }, + messageStore: { + ...freshStore, + messages: processedMessageStore.messages, + threads: processedMessageStore.threads, + }, }; } else if (action.type === incrementalStateSyncActionType) { if ( @@ -791,7 +758,6 @@ messagesResult.rawMessageInfos, messagesResult.truncationStatuses, newThreadInfos, - action.type, ); } else if (action.type === processUpdatesActionType) { if (action.payload.updatesResult.newUpdates.length === 0) { @@ -809,7 +775,6 @@ messagesResult.rawMessageInfos, messagesResult.truncationStatuses, newThreadInfos, - action.type, ); return { messageStoreOperations, @@ -830,7 +795,6 @@ messagesResult.rawMessageInfos, messagesResult.truncationStatuses, newThreadInfos, - action.type, ); } else if ( action.type === fetchSingleMostRecentMessagesFromThreadsActionTypes.success @@ -840,7 +804,6 @@ action.payload.rawMessageInfos, action.payload.truncationStatuses, newThreadInfos, - action.type, ); } else if ( action.type === fetchMessagesBeforeCursorActionTypes.success || @@ -851,7 +814,6 @@ action.payload.rawMessageInfos, { [action.payload.threadID]: action.payload.truncationStatus }, newThreadInfos, - action.type, ); } else if ( action.type === logOutActionTypes.success || @@ -868,17 +830,12 @@ messageStoreOperations, ); - assertMessageStoreThreadsAreEqual( - processedMessageStore, - filteredMessageStore, - action.type, - ); - return { messageStoreOperations, messageStore: { ...filteredMessageStore, messages: processedMessageStore.messages, + threads: processedMessageStore.threads, }, }; } else if (action.type === newThreadActionTypes.success) { @@ -891,7 +848,6 @@ messagesResult.rawMessageInfos, messagesResult.truncationStatuses, newThreadInfos, - action.type, ); } else if (action.type === sendMessageReportActionTypes.success) { return mergeNewMessages( @@ -902,7 +858,6 @@ messageTruncationStatus.UNCHANGED, }, newThreadInfos, - action.type, ); } else if (action.type === registerActionTypes.success) { const truncationStatuses = {}; @@ -915,7 +870,6 @@ action.payload.rawMessageInfos, truncationStatuses, newThreadInfos, - action.type, ); } else if ( action.type === changeThreadSettingsActionTypes.success || @@ -931,7 +885,6 @@ action.payload.newMessageInfos, { [action.payload.threadID]: messageTruncationStatus.UNCHANGED }, newThreadInfos, - action.type, ); } else if (action.type === deleteEntryActionTypes.success) { const payload = action.payload; @@ -941,7 +894,6 @@ payload.newMessageInfos, { [payload.threadID]: messageTruncationStatus.UNCHANGED }, newThreadInfos, - action.type, ); } } else if (action.type === joinThreadActionTypes.success) { @@ -954,7 +906,6 @@ messagesResult.rawMessageInfos, messagesResult.truncationStatuses, newThreadInfos, - action.type, ); } else if (action.type === sendEditMessageActionTypes.success) { const { newMessageInfos } = action.payload; @@ -968,7 +919,6 @@ newMessageInfos, truncationStatuses, newThreadInfos, - action.type, ); } else if ( action.type === sendTextMessageActionTypes.started || @@ -1027,10 +977,6 @@ }; } - const threads = { - ...messageStore.threads, - ...updatedThreads, - }; messageStoreOperations.push({ type: 'replace_threads', payload: { @@ -1045,17 +991,11 @@ const newMessageStore = { messages: processedMessageStore.messages, - threads, + threads: processedMessageStore.threads, local, currentAsOf: messageStore.currentAsOf, }; - assertMessageStoreThreadsAreEqual( - processedMessageStore, - newMessageStore, - action.type, - ); - return { messageStoreOperations, messageStore: newMessageStore, @@ -1106,23 +1046,9 @@ messageStoreOperations, ); - const newMessageStore = { - ...processedMessageStore, - threads: { - ...messageStore.threads, - ...updatedThreads, - }, - }; - - assertMessageStoreThreadsAreEqual( - processedMessageStore, - newMessageStore, - action.type, - ); - return { messageStoreOperations, - messageStore: newMessageStore, + messageStore: processedMessageStore, }; } else if ( action.type === sendTextMessageActionTypes.success || @@ -1200,25 +1126,14 @@ messageStoreOperations, ); - const newMessageStore = { - ...messageStore, - messages: processedMessageStore.messages, - threads: { - ...messageStore.threads, - ...updatedThreads, - }, - local, - }; - - assertMessageStoreThreadsAreEqual( - processedMessageStore, - newMessageStore, - action.type, - ); - return { messageStoreOperations, - messageStore: newMessageStore, + messageStore: { + ...messageStore, + messages: processedMessageStore.messages, + threads: processedMessageStore.threads, + local, + }, }; } else if (action.type === saveMessagesActionType) { const truncationStatuses = {}; @@ -1232,7 +1147,6 @@ action.payload.rawMessageInfos, truncationStatuses, newThreadInfos, - action.type, ); return { messageStoreOperations, @@ -1293,20 +1207,11 @@ const newMessageStore = { messages: processedMessageStore.messages, - threads: { - ...messageStore.threads, - ...updatedThreads, - }, + threads: processedMessageStore.threads, local: _omit(messageIDsToPrune)(messageStore.local), currentAsOf: messageStore.currentAsOf, }; - assertMessageStoreThreadsAreEqual( - processedMessageStore, - newMessageStore, - action.type, - ); - return { messageStoreOperations, messageStore: newMessageStore, @@ -1555,24 +1460,13 @@ messageStoreOperations, ); - const newMessageStore = { - ...messageStore, - threads: { - ...messageStore.threads, - [threadID]: threadState, - }, - messages: processedMessageStore.messages, - }; - - assertMessageStoreThreadsAreEqual( - processedMessageStore, - newMessageStore, - action.type, - ); - return { messageStoreOperations, - messageStore: newMessageStore, + messageStore: { + ...messageStore, + threads: processedMessageStore.threads, + messages: processedMessageStore.messages, + }, }; } else if (action.type === processServerRequestsActionType) { const { @@ -1585,24 +1479,15 @@ messageStoreOperations, ); - assertMessageStoreThreadsAreEqual( - processedMessageStore, - messageStoreAfterReassignment, - action.type, - ); - return { messageStoreOperations, messageStore: { ...messageStoreAfterReassignment, messages: processedMessageStore.messages, + threads: processedMessageStore.threads, }, }; } else if (action.type === setClientDBStoreActionType) { - const payloadMessages = action.payload.messages; - if (!payloadMessages) { - return { messageStoreOperations: [], messageStore }; - } const actionPayloadMessageStoreThreads = translateClientDBThreadMessageInfos( action.payload.messageStoreThreads ?? [], @@ -1612,21 +1497,23 @@ for (const threadID in actionPayloadMessageStoreThreads) { newThreads[threadID] = { ...actionPayloadMessageStoreThreads[threadID], - messageIDs: messageStore.threads[threadID]?.messageIDs ?? [], + messageIDs: messageStore.threads?.[threadID]?.messageIDs ?? [], }; } - assertMessageStoreThreadsAreEqual( - { - ...messageStore, - threads: newThreads, - }, - messageStore, - `${action.type} | comparing SQLite with redux-persist`, - ); + const payloadMessages = action.payload.messages; + if (!payloadMessages) { + return { + messageStoreOperations: [], + messageStore: { ...messageStore, threads: newThreads }, + }; + } const { messageStoreOperations, messageStore: updatedMessageStore } = - updateMessageStoreWithLatestThreadInfos(messageStore, newThreadInfos); + updateMessageStoreWithLatestThreadInfos( + { ...messageStore, threads: newThreads }, + newThreadInfos, + ); let threads = { ...updatedMessageStore.threads }; let local = { ...updatedMessageStore.local }; diff --git a/lib/reducers/message-reducer.test.js b/lib/reducers/message-reducer.test.js --- a/lib/reducers/message-reducer.test.js +++ b/lib/reducers/message-reducer.test.js @@ -265,17 +265,17 @@ }, ]; - const threads = { - '88471': { - messageIDs: ['local11', 'local10', '103502'], - startReached: false, + const clientDBThreads = [ + { + id: '88471', + start_reached: '0', }, - }; + ]; const { messageStore: updatedMessageStore } = reduceMessageStore( { messages: {}, - threads, + threads: {}, local: {}, currentAsOf: { [ashoatKeyserverID]: 1234567890123 }, }, @@ -287,7 +287,7 @@ threadStore: { threadInfos: {}, }, - messageStoreThreads: [], + messageStoreThreads: clientDBThreads, messages: clientDBMessages, reports: [], },