From 86fbd496af8ff646bcff8484ad1733101333e8c6 Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Fri, 7 Apr 2017 14:21:31 -0400 Subject: Check if we need to add DM/GM to sidebar regardless of post sender (#6009) --- webapp/actions/channel_actions.jsx | 2 +- webapp/actions/notification_actions.jsx | 6 +++- webapp/actions/post_actions.jsx | 18 ++++++------ webapp/actions/user_actions.jsx | 49 +++++++++++++++++++++++---------- webapp/routes/route_team.jsx | 3 +- 5 files changed, 51 insertions(+), 27 deletions(-) diff --git a/webapp/actions/channel_actions.jsx b/webapp/actions/channel_actions.jsx index acbc943cf..ea2039047 100644 --- a/webapp/actions/channel_actions.jsx +++ b/webapp/actions/channel_actions.jsx @@ -300,7 +300,7 @@ export function loadDMsAndGMsForUnreads() { if (unreads[id].msgs > 0 || unreads[id].mentions > 0) { const channel = ChannelStore.get(id); if (channel && channel.type === Constants.DM_CHANNEL) { - loadNewDMIfNeeded(Utils.getUserIdFromChannelName(channel)); + loadNewDMIfNeeded(channel.id); } else if (channel && channel.type === Constants.GM_CHANNEL) { loadNewGMIfNeeded(channel.id); } diff --git a/webapp/actions/notification_actions.jsx b/webapp/actions/notification_actions.jsx index e56d486ec..50b300336 100644 --- a/webapp/actions/notification_actions.jsx +++ b/webapp/actions/notification_actions.jsx @@ -66,7 +66,11 @@ export function sendDesktopNotification(post, msgProps) { } if (title === '') { - title = msgProps.channel_display_name; + if (msgProps.channel_type === Constants.DM_CHANNEL) { + title = Utils.localizeMessage('notification.dm', 'Direct Message'); + } else { + title = msgProps.channel_display_name; + } } let notifyText = post.message.replace(/\n+/g, ' '); diff --git a/webapp/actions/post_actions.jsx b/webapp/actions/post_actions.jsx index 015d93d0f..3af99f9fa 100644 --- a/webapp/actions/post_actions.jsx +++ b/webapp/actions/post_actions.jsx @@ -20,19 +20,11 @@ const ActionTypes = Constants.ActionTypes; const Preferences = Constants.Preferences; export function handleNewPost(post, msg) { - let websocketMessageProps = null; + let websocketMessageProps = {}; if (msg) { websocketMessageProps = msg.data; } - if (msg && msg.data) { - if (msg.data.channel_type === Constants.DM_CHANNEL) { - loadNewDMIfNeeded(post.user_id); - } else if (msg.data.channel_type === Constants.GM_CHANNEL) { - loadNewGMIfNeeded(post.channel_id, post.user_id); - } - } - if (ChannelStore.getMyMember(post.channel_id)) { completePostReceive(post, websocketMessageProps); } else { @@ -43,6 +35,14 @@ export function handleNewPost(post, msg) { AsyncClient.getChannelMember(post.channel_id, UserStore.getCurrentId()).then(() => completePostReceive(post, websocketMessageProps)); } + + if (msg && msg.data) { + if (msg.data.channel_type === Constants.DM_CHANNEL) { + loadNewDMIfNeeded(post.channel_id); + } else if (msg.data.channel_type === Constants.GM_CHANNEL) { + loadNewGMIfNeeded(post.channel_id); + } + } } function completePostReceive(post, websocketMessageProps) { diff --git a/webapp/actions/user_actions.jsx b/webapp/actions/user_actions.jsx index 1ab85922d..70df4776e 100644 --- a/webapp/actions/user_actions.jsx +++ b/webapp/actions/user_actions.jsx @@ -11,7 +11,7 @@ import ChannelStore from 'stores/channel_store.jsx'; import {getChannelMembersForUserIds} from 'actions/channel_actions.jsx'; import {loadStatusesForProfilesList, loadStatusesForProfilesMap} from 'actions/status_actions.jsx'; -import {getDirectChannelName} from 'utils/utils.jsx'; +import {getDirectChannelName, getUserIdFromChannelName} from 'utils/utils.jsx'; import * as AsyncClient from 'utils/async_client.jsx'; import Client from 'client/web_client.jsx'; @@ -255,24 +255,45 @@ function populateChannelWithProfiles(channelId, userIds) { UserStore.emitInChannelChange(); } -export function loadNewDMIfNeeded(userId) { - if (userId === UserStore.getCurrentId()) { - return; - } +export function loadNewDMIfNeeded(channelId) { + function checkPreference(channel) { + const userId = getUserIdFromChannelName(channel); + + if (!userId) { + return; + } - const pref = PreferenceStore.getBool(Preferences.CATEGORY_DIRECT_CHANNEL_SHOW, userId, false); - if (pref === false) { - PreferenceStore.setPreference(Preferences.CATEGORY_DIRECT_CHANNEL_SHOW, userId, 'true'); - AsyncClient.savePreference(Preferences.CATEGORY_DIRECT_CHANNEL_SHOW, userId, 'true'); - loadProfilesForDM(); + const pref = PreferenceStore.getBool(Preferences.CATEGORY_DIRECT_CHANNEL_SHOW, userId, false); + if (pref === false) { + PreferenceStore.setPreference(Preferences.CATEGORY_DIRECT_CHANNEL_SHOW, userId, 'true'); + AsyncClient.savePreference(Preferences.CATEGORY_DIRECT_CHANNEL_SHOW, userId, 'true'); + loadProfilesForDM(); + } } -} -export function loadNewGMIfNeeded(channelId, userId) { - if (userId === UserStore.getCurrentId()) { - return; + const channel = ChannelStore.get(channelId); + if (channel) { + checkPreference(channel); + } else { + Client.getChannel( + channelId, + (data) => { + AppDispatcher.handleServerAction({ + type: ActionTypes.RECEIVED_CHANNEL, + channel: data.channel, + member: data.member + }); + + checkPreference(data.channel); + }, + (err) => { + AsyncClient.dispatchError(err, 'getChannel'); + } + ); } +} +export function loadNewGMIfNeeded(channelId) { function checkPreference() { const pref = PreferenceStore.getBool(Preferences.CATEGORY_GROUP_CHANNEL_SHOW, channelId, false); if (pref === false) { diff --git a/webapp/routes/route_team.jsx b/webapp/routes/route_team.jsx index ff865989a..d8350a3c7 100644 --- a/webapp/routes/route_team.jsx +++ b/webapp/routes/route_team.jsx @@ -13,7 +13,6 @@ import AppDispatcher from 'dispatcher/app_dispatcher.jsx'; import Constants from 'utils/constants.jsx'; const ActionTypes = Constants.ActionTypes; import * as AsyncClient from 'utils/async_client.jsx'; -import * as Utils from 'utils/utils.jsx'; import Client from 'client/web_client.jsx'; import ChannelStore from 'stores/channel_store.jsx'; import BrowserStore from 'stores/browser_store.jsx'; @@ -35,7 +34,7 @@ function doChannelChange(state, replace, callback) { channel = ChannelStore.getByName(state.params.channel); if (channel && channel.type === Constants.DM_CHANNEL) { - loadNewDMIfNeeded(Utils.getUserIdFromChannelName(channel)); + loadNewDMIfNeeded(channel.id); } else if (channel && channel.type === Constants.GM_CHANNEL) { loadNewGMIfNeeded(channel.id); } -- cgit v1.2.3-1-g7c22