From cc3a95fdd942370bee31aac67c9476f4c8032f1d Mon Sep 17 00:00:00 2001 From: Nick Frazier Date: Thu, 27 Jul 2017 08:15:50 -0400 Subject: Added websocket event and webapp handler for updating user roles (#6953) --- webapp/actions/websocket_actions.jsx | 9 +++++++++ webapp/stores/team_store.jsx | 16 ++++++++++++++++ webapp/utils/constants.jsx | 1 + 3 files changed, 26 insertions(+) (limited to 'webapp') 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', -- cgit v1.2.3-1-g7c22