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,20 +673,19 @@ } = 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 threadsToRemoveMessagesFrom = []; + const filteredThreads = {}; for (const threadID in reassignedMessageStore.threads) { - if (watchedThreadInfos[threadID]) { + const threadMessageInfo = reassignedMessageStore.threads[threadID]; + const threadInfo = threadInfos[threadID]; + + if (isThreadWatched(threadID, threadInfo, watchedIDs)) { + filteredThreads[threadID] = threadMessageInfo; continue; } + threadsToRemoveMessagesFrom.push(threadID); for (const id of reassignedMessageStore.threads[threadID].messageIDs) { messageIDsToRemove.push(id);