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 @@ -10,7 +10,6 @@ import _mapValues from 'lodash/fp/mapValues.js'; import _omit from 'lodash/fp/omit.js'; import _omitBy from 'lodash/fp/omitBy.js'; -import _pick from 'lodash/fp/pick.js'; import _pickBy from 'lodash/fp/pickBy.js'; import _uniq from 'lodash/fp/uniq.js'; @@ -674,23 +673,18 @@ } = reassignMessagesToRealizedThreads(messageStore, threadInfos); messageStoreOperations.push(...reassignMessagesOps); const watchedIDs = [...threadWatcher.getWatchedIDs(), ...reassignedThreadIDs]; - const watchedThreadInfos = _pickBy((threadInfo: RawThreadInfo) => - isThreadWatched(threadInfo.id, threadInfo, watchedIDs), - )(threadInfos); - const filteredThreads = _pick(Object.keys(watchedThreadInfos))( - reassignedMessageStore.threads, - ); - - const messageIDsToRemove = []; + const filteredThreads = {}; const threadsToRemoveMessagesFrom = []; + const messageIDsToRemove = []; for (const threadID in reassignedMessageStore.threads) { - if (watchedThreadInfos[threadID]) { - continue; - } - threadsToRemoveMessagesFrom.push(threadID); - for (const id of reassignedMessageStore.threads[threadID].messageIDs) { - messageIDsToRemove.push(id); + const threadMessageInfo = reassignedMessageStore.threads[threadID]; + const threadInfo = threadInfos[threadID]; + if (isThreadWatched(threadID, threadInfo, watchedIDs)) { + filteredThreads[threadID] = threadMessageInfo; + } else { + threadsToRemoveMessagesFrom.push(threadID); + messageIDsToRemove.push(...threadMessageInfo.messageIDs); } }