MM-25782 improve channel member reducer speed to sync memberships (#4402)

Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
This commit is contained in:
Mattermost Build 2020-06-09 20:39:48 +02:00 committed by GitHub
parent 4c4dd8297d
commit bc25a29c42
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -370,12 +370,15 @@ function myMembers(state: RelationOneToOne<Channel, ChannelMembership> = {}, 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;
});
}