From bc25a29c42bb7344fbc811facb13859606ae4467 Mon Sep 17 00:00:00 2001 From: Mattermost Build Date: Tue, 9 Jun 2020 20:39:48 +0200 Subject: [PATCH] MM-25782 improve channel member reducer speed to sync memberships (#4402) Co-authored-by: Elias Nahum --- app/mm-redux/reducers/entities/channels.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/app/mm-redux/reducers/entities/channels.ts b/app/mm-redux/reducers/entities/channels.ts index 97136979f..80d6bbe69 100644 --- a/app/mm-redux/reducers/entities/channels.ts +++ b/app/mm-redux/reducers/entities/channels.ts @@ -370,12 +370,15 @@ function myMembers(state: RelationOneToOne = {}, act // Remove existing channel memberships when the user is no longer a member if (sync) { - current.forEach((member: ChannelMembership) => { - const id = member.channel_id; - if (channelMembers.find((cm: ChannelMembership) => cm.channel_id !== id && teamChannels.includes(id))) { - delete nextState[id]; - hasNewValues = true; - } + const memberIds = channelMembers.map((cm: ChannelMembership) => cm.channel_id); + const removedMembers = current.filter((cm: ChannelMembership) => { + const id = cm.channel_id; + return !memberIds.includes(id) && teamChannels.includes(id); + }); + + removedMembers.forEach((member: ChannelMembership) => { + delete nextState[member.channel_id]; + hasNewValues = true; }); }