diff options
author | Joram Wilander <jwawilander@gmail.com> | 2017-02-13 09:27:28 -0500 |
---|---|---|
committer | Corey Hulen <corey@hulen.com> | 2017-02-13 09:27:28 -0500 |
commit | ff741740eebceb43b1d69b13d97ae7eed2aa32d1 (patch) | |
tree | 0f795cea935a72997bf3618ceaf3b0513d5e8096 /webapp/stores/team_store.jsx | |
parent | fac85b676eafb20b5f70db1805006d64889606ff (diff) | |
download | chat-ff741740eebceb43b1d69b13d97ae7eed2aa32d1.tar.gz chat-ff741740eebceb43b1d69b13d97ae7eed2aa32d1.tar.bz2 chat-ff741740eebceb43b1d69b13d97ae7eed2aa32d1.zip |
Increase performance when receiving messages (#5375)
Diffstat (limited to 'webapp/stores/team_store.jsx')
-rw-r--r-- | webapp/stores/team_store.jsx | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/webapp/stores/team_store.jsx b/webapp/stores/team_store.jsx index 2752c6b57..e58c79806 100644 --- a/webapp/stores/team_store.jsx +++ b/webapp/stores/team_store.jsx @@ -316,6 +316,23 @@ class TeamStoreClass extends EventEmitter { member.mention_count -= channelMember.mention_count; } } + + incrementMessages(id) { + const member = this.my_team_members.filter((m) => m.team_id === id)[0]; + member.msg_count++; + } + + incrementMentionsIfNeeded(id, msgProps) { + let mentions = []; + if (msgProps && msgProps.mentions) { + mentions = JSON.parse(msgProps.mentions); + } + + if (mentions.indexOf(UserStore.getCurrentId()) !== -1) { + const member = this.my_team_members.filter((m) => m.team_id === id)[0]; + member.mention_count++; + } + } } var TeamStore = new TeamStoreClass(); @@ -370,6 +387,14 @@ TeamStore.dispatchToken = AppDispatcher.register((payload) => { TeamStore.emitUnreadChange(); } break; + case ActionTypes.RECEIVED_POST: + var id = action.websocketMessageProps ? action.websocketMessageProps.team_id : ''; + if (TeamStore.getCurrentId() !== id && id.length > 0) { + TeamStore.incrementMessages(id); + TeamStore.incrementMentionsIfNeeded(id, action.websocketMessageProps); + TeamStore.emitChange(); + } + break; default: } }); |