summaryrefslogtreecommitdiffstats
path: root/webapp
diff options
context:
space:
mode:
authorNick Frazier <nrflaw@gmail.com>2017-07-27 08:15:50 -0400
committerJoram Wilander <jwawilander@gmail.com>2017-07-27 08:15:50 -0400
commitcc3a95fdd942370bee31aac67c9476f4c8032f1d (patch)
tree4a2ddfe6c06d0ee6e85b1ab224ea25e30c2b14bf /webapp
parentac5dd4aa7039f1ef00c32e81981d115313a186bc (diff)
downloadchat-cc3a95fdd942370bee31aac67c9476f4c8032f1d.tar.gz
chat-cc3a95fdd942370bee31aac67c9476f4c8032f1d.tar.bz2
chat-cc3a95fdd942370bee31aac67c9476f4c8032f1d.zip
Added websocket event and webapp handler for updating user roles (#6953)
Diffstat (limited to 'webapp')
-rw-r--r--webapp/actions/websocket_actions.jsx9
-rw-r--r--webapp/stores/team_store.jsx16
-rw-r--r--webapp/utils/constants.jsx1
3 files changed, 26 insertions, 0 deletions
diff --git a/webapp/actions/websocket_actions.jsx b/webapp/actions/websocket_actions.jsx
index da64e209d..1e75b1758 100644
--- a/webapp/actions/websocket_actions.jsx
+++ b/webapp/actions/websocket_actions.jsx
@@ -170,6 +170,10 @@ function handleEvent(msg) {
handleUserUpdatedEvent(msg);
break;
+ case SocketEvents.MEMBERROLE_UPDATED:
+ handleUpdateMemberRoleEvent(msg);
+ break;
+
case SocketEvents.CHANNEL_CREATED:
handleChannelCreatedEvent(msg);
break;
@@ -321,6 +325,11 @@ function handleUpdateTeamEvent(msg) {
TeamStore.updateTeam(msg.data.team);
}
+function handleUpdateMemberRoleEvent(msg) {
+ const member = JSON.parse(msg.data.member);
+ TeamStore.updateMyRoles(member);
+}
+
function handleDirectAddedEvent(msg) {
getChannelAndMyMember(msg.broadcast.channel_id)(dispatch, getState);
PreferenceStore.setPreference(Preferences.CATEGORY_DIRECT_CHANNEL_SHOW, msg.data.teammate_id, 'true');
diff --git a/webapp/stores/team_store.jsx b/webapp/stores/team_store.jsx
index 7bb9afb63..83a59a32e 100644
--- a/webapp/stores/team_store.jsx
+++ b/webapp/stores/team_store.jsx
@@ -341,6 +341,22 @@ class TeamStoreClass extends EventEmitter {
return false;
}
+ updateMyRoles(member) {
+ const teamMembers = this.getMyTeamMembers();
+ const teamMember = teamMembers.find((m) => m.user_id === member.user_id && m.team_id === member.team_id);
+
+ if (teamMember) {
+ const newMember = Object.assign({}, teamMember, {
+ roles: member.roles
+ });
+
+ store.dispatch({
+ type: TeamTypes.RECEIVED_MY_TEAM_MEMBER,
+ data: newMember
+ });
+ }
+ }
+
subtractUnread(teamId, msgs, mentions) {
let member = this.getMyTeamMembers().filter((m) => m.team_id === teamId)[0];
if (member) {
diff --git a/webapp/utils/constants.jsx b/webapp/utils/constants.jsx
index ddebec293..0ff90087a 100644
--- a/webapp/utils/constants.jsx
+++ b/webapp/utils/constants.jsx
@@ -233,6 +233,7 @@ export const SocketEvents = {
USER_ADDED: 'user_added',
USER_REMOVED: 'user_removed',
USER_UPDATED: 'user_updated',
+ MEMBERROLE_UPDATED: 'memberrole_updated',
TYPING: 'typing',
PREFERENCE_CHANGED: 'preference_changed',
PREFERENCES_CHANGED: 'preferences_changed',