summaryrefslogtreecommitdiffstats
path: root/webapp
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2017-04-07 14:21:31 -0400
committerGeorge Goldberg <george@gberg.me>2017-04-07 19:21:31 +0100
commit86fbd496af8ff646bcff8484ad1733101333e8c6 (patch)
tree894e300dd9555fd3a2313f1c4f2ec628cd3edc07 /webapp
parent9318ffcdf3caf77d66e0b9fc7967d9de9ea99b4b (diff)
downloadchat-86fbd496af8ff646bcff8484ad1733101333e8c6.tar.gz
chat-86fbd496af8ff646bcff8484ad1733101333e8c6.tar.bz2
chat-86fbd496af8ff646bcff8484ad1733101333e8c6.zip
Check if we need to add DM/GM to sidebar regardless of post sender (#6009)
Diffstat (limited to 'webapp')
-rw-r--r--webapp/actions/channel_actions.jsx2
-rw-r--r--webapp/actions/notification_actions.jsx6
-rw-r--r--webapp/actions/post_actions.jsx18
-rw-r--r--webapp/actions/user_actions.jsx49
-rw-r--r--webapp/routes/route_team.jsx3
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);
}