From 892f8f4651234631a4f83648334cf14f6da323b2 Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Mon, 13 Feb 2017 13:50:08 -0500 Subject: Fix ignore unread and DM unreads (#5391) * Fix ignoring unreads in channels * Fix DM unreads --- webapp/stores/channel_store.jsx | 9 +++++++-- webapp/stores/team_store.jsx | 11 +++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) (limited to 'webapp/stores') diff --git a/webapp/stores/channel_store.jsx b/webapp/stores/channel_store.jsx index 488e49492..ba6620750 100644 --- a/webapp/stores/channel_store.jsx +++ b/webapp/stores/channel_store.jsx @@ -398,6 +398,11 @@ class ChannelStoreClass extends EventEmitter { return; } + const member = this.getMyMember(id); + if (member && member.notify_props && member.notify_props.mark_unread === NotificationPrefs.MENTION) { + return; + } + this.unreadCounts[id].msgs++; this.get(id).total_msg_count++; } @@ -496,10 +501,10 @@ ChannelStore.dispatchToken = AppDispatcher.register((payload) => { case ActionTypes.RECEIVED_POST: var id = action.post.channel_id; - var teamId = action.websocketMessageProps ? action.websocketMessageProps.team_id : ''; + var teamId = action.websocketMessageProps ? action.websocketMessageProps.team_id : null; // Current team and not current channel or the window is inactive - if (TeamStore.getCurrentId() === teamId && (ChannelStore.getCurrentId() !== id || !window.isActive)) { + if ((TeamStore.getCurrentId() === teamId || teamId === '') && (ChannelStore.getCurrentId() !== id || !window.isActive)) { ChannelStore.incrementMessages(id); ChannelStore.incrementMentionsIfNeeded(id, action.websocketMessageProps); ChannelStore.emitChange(); diff --git a/webapp/stores/team_store.jsx b/webapp/stores/team_store.jsx index e58c79806..af17f7b6f 100644 --- a/webapp/stores/team_store.jsx +++ b/webapp/stores/team_store.jsx @@ -4,8 +4,10 @@ import AppDispatcher from '../dispatcher/app_dispatcher.jsx'; import EventEmitter from 'events'; import UserStore from 'stores/user_store.jsx'; +import ChannelStore from 'stores/channel_store.jsx'; import Constants from 'utils/constants.jsx'; +const NotificationPrefs = Constants.NotificationPrefs; import {getSiteURL} from 'utils/url.jsx'; const ActionTypes = Constants.ActionTypes; @@ -317,7 +319,12 @@ class TeamStoreClass extends EventEmitter { } } - incrementMessages(id) { + incrementMessages(id, channelId) { + const channelMember = ChannelStore.getMyMember(channelId); + if (channelMember && channelMember.notify_props && channelMember.notify_props.mark_unread === NotificationPrefs.MENTION) { + return; + } + const member = this.my_team_members.filter((m) => m.team_id === id)[0]; member.msg_count++; } @@ -390,7 +397,7 @@ TeamStore.dispatchToken = AppDispatcher.register((payload) => { case ActionTypes.RECEIVED_POST: var id = action.websocketMessageProps ? action.websocketMessageProps.team_id : ''; if (TeamStore.getCurrentId() !== id && id.length > 0) { - TeamStore.incrementMessages(id); + TeamStore.incrementMessages(id, action.post.channel_id); TeamStore.incrementMentionsIfNeeded(id, action.websocketMessageProps); TeamStore.emitChange(); } -- cgit v1.2.3-1-g7c22