summaryrefslogtreecommitdiffstats
path: root/webapp/stores/channel_store.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/stores/channel_store.jsx')
-rw-r--r--webapp/stores/channel_store.jsx39
1 files changed, 23 insertions, 16 deletions
diff --git a/webapp/stores/channel_store.jsx b/webapp/stores/channel_store.jsx
index 20e7c966f..2ca01fc6e 100644
--- a/webapp/stores/channel_store.jsx
+++ b/webapp/stores/channel_store.jsx
@@ -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();