From 9625362494888c9423bb6503b7e18557b6b9cc79 Mon Sep 17 00:00:00 2001
From: Joram Wilander <jwawilander@gmail.com>
Date: Wed, 10 May 2017 07:41:12 -0400
Subject: Fix DM getting marked unread from your own message (#6373)

---
 webapp/utils/channel_utils.jsx | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

(limited to 'webapp/utils/channel_utils.jsx')

diff --git a/webapp/utils/channel_utils.jsx b/webapp/utils/channel_utils.jsx
index 10d06fbe1..1afce39b4 100644
--- a/webapp/utils/channel_utils.jsx
+++ b/webapp/utils/channel_utils.jsx
@@ -5,6 +5,8 @@ const Preferences = Constants.Preferences;
 import * as Utils from 'utils/utils.jsx';
 
 import UserStore from 'stores/user_store.jsx';
+import ChannelStore from 'stores/channel_store.jsx';
+import TeamStore from 'stores/team_store.jsx';
 import PreferenceStore from 'stores/preference_store.jsx';
 import LocalizationStore from 'stores/localization_store.jsx';
 
@@ -251,6 +253,29 @@ export function buildGroupChannelName(channelId) {
     return displayName;
 }
 
+export function getCountsStateFromStores(team = TeamStore.getCurrent(), teamMembers = TeamStore.getMyTeamMembers(), unreadCounts = ChannelStore.getUnreadCounts()) {
+    let mentionCount = 0;
+    let messageCount = 0;
+
+    teamMembers.forEach((member) => {
+        if (member.team_id !== TeamStore.getCurrentId()) {
+            mentionCount += (member.mention_count || 0);
+            messageCount += (member.msg_count || 0);
+        }
+    });
+
+    Object.keys(unreadCounts).forEach((chId) => {
+        const channel = ChannelStore.get(chId);
+
+        if (channel && (channel.type === Constants.DM_CHANNEL || channel.type === Constants.GM_CHANNEL || channel.team_id === team.id)) {
+            messageCount += unreadCounts[chId].msgs;
+            mentionCount += unreadCounts[chId].mentions;
+        }
+    });
+
+    return {mentionCount, messageCount};
+}
+
 /*
  * not exported helpers
  */
-- 
cgit v1.2.3-1-g7c22

