PLT-4430 improve slow channel switching (#4331)
* PLT-4430 improve slow channel switching * Update client side unit tests * Convert getChannelsUnread to getMyChannelMembers and address other feedback * Pull channel members on websocket reconnect
Этот коммит содержится в:
коммит произвёл
Harrison Healey
родитель
14ce471311
Коммит
f82667f3b8
@@ -156,7 +156,7 @@ class ChannelStoreClass extends EventEmitter {
|
||||
if (c) {
|
||||
cm[cmid].msg_count = this.get(id).total_msg_count;
|
||||
cm[cmid].mention_count = 0;
|
||||
this.setUnreadCount(id);
|
||||
this.setUnreadCountByChannel(id);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -250,6 +250,12 @@ class ChannelStoreClass extends EventEmitter {
|
||||
this.myChannelMembers = channelMembers;
|
||||
}
|
||||
|
||||
storeMyChannelMembersList(channelMembers) {
|
||||
channelMembers.forEach((m) => {
|
||||
this.myChannelMembers[m.channel_id] = m;
|
||||
});
|
||||
}
|
||||
|
||||
getMyMembers() {
|
||||
return this.myChannelMembers;
|
||||
}
|
||||
@@ -278,7 +284,13 @@ class ChannelStoreClass extends EventEmitter {
|
||||
return this.postMode;
|
||||
}
|
||||
|
||||
setUnreadCount(id) {
|
||||
setUnreadCountsByMembers(members) {
|
||||
members.forEach((m) => {
|
||||
this.setUnreadCountByChannel(m.channel_id);
|
||||
});
|
||||
}
|
||||
|
||||
setUnreadCountByChannel(id) {
|
||||
const ch = this.get(id);
|
||||
const chMember = this.getMyMember(id);
|
||||
|
||||
@@ -292,13 +304,6 @@ class ChannelStoreClass extends EventEmitter {
|
||||
this.unreadCounts[id] = {msgs: chUnreadCount, mentions: chMentionCount};
|
||||
}
|
||||
|
||||
setUnreadCounts() {
|
||||
const channels = this.getAll();
|
||||
channels.forEach((ch) => {
|
||||
this.setUnreadCount(ch.id);
|
||||
});
|
||||
}
|
||||
|
||||
getUnreadCount(id) {
|
||||
return this.unreadCounts[id] || {msgs: 0, mentions: 0};
|
||||
}
|
||||
@@ -362,12 +367,6 @@ ChannelStore.dispatchToken = AppDispatcher.register((payload) => {
|
||||
|
||||
case ActionTypes.RECEIVED_CHANNELS:
|
||||
ChannelStore.storeChannels(action.channels);
|
||||
ChannelStore.storeMyChannelMembers(action.members);
|
||||
currentId = ChannelStore.getCurrentId();
|
||||
if (currentId && window.isActive) {
|
||||
ChannelStore.resetCounts(currentId);
|
||||
}
|
||||
ChannelStore.setUnreadCounts();
|
||||
ChannelStore.emitChange();
|
||||
break;
|
||||
|
||||
@@ -380,10 +379,18 @@ ChannelStore.dispatchToken = AppDispatcher.register((payload) => {
|
||||
if (currentId && window.isActive) {
|
||||
ChannelStore.resetCounts(currentId);
|
||||
}
|
||||
ChannelStore.setUnreadCount(action.channel.id);
|
||||
ChannelStore.setUnreadCountByChannel(action.channel.id);
|
||||
ChannelStore.emitChange();
|
||||
break;
|
||||
|
||||
case ActionTypes.RECEIVED_MY_CHANNEL_MEMBERS:
|
||||
ChannelStore.storeMyChannelMembersList(action.members);
|
||||
currentId = ChannelStore.getCurrentId();
|
||||
if (currentId && window.isActive) {
|
||||
ChannelStore.resetCounts(currentId);
|
||||
}
|
||||
ChannelStore.setUnreadCountsByMembers(action.members);
|
||||
break;
|
||||
case ActionTypes.RECEIVED_MORE_CHANNELS:
|
||||
ChannelStore.storeMoreChannels(action.channels);
|
||||
ChannelStore.emitMoreChange();
|
||||
|
||||
Ссылка в новой задаче
Block a user