diff options
author | Christopher Speller <crspeller@gmail.com> | 2016-11-01 15:50:34 -0400 |
---|---|---|
committer | Joram Wilander <jwawilander@gmail.com> | 2016-11-01 15:50:34 -0400 |
commit | b0f38f8a84ae0b7cba43c7d12a19f8f3cb79e9b0 (patch) | |
tree | 376a9d7ca30c9c917b6864bcf5c0021635a05f66 | |
parent | 60a43a5b4ff1e2f5b8d67419611b8f62d8b5412d (diff) | |
download | chat-b0f38f8a84ae0b7cba43c7d12a19f8f3cb79e9b0.tar.gz chat-b0f38f8a84ae0b7cba43c7d12a19f8f3cb79e9b0.tar.bz2 chat-b0f38f8a84ae0b7cba43c7d12a19f8f3cb79e9b0.zip |
Fixing websocket and team store issues when leaving team (#4412)
-rw-r--r-- | api/team.go | 10 | ||||
-rw-r--r-- | webapp/actions/websocket_actions.jsx | 4 | ||||
-rw-r--r-- | webapp/stores/team_store.jsx | 8 |
3 files changed, 11 insertions, 11 deletions
diff --git a/api/team.go b/api/team.go index 46e822504..5a8c605ef 100644 --- a/api/team.go +++ b/api/team.go @@ -347,6 +347,12 @@ func LeaveTeam(team *model.Team, user *model.User) *model.AppError { } } + // Send the websocket message before we actually do the remove so the user being removed gets it. + message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_LEAVE_TEAM, team.Id, "", "", nil) + message.Add("user_id", user.Id) + message.Add("team_id", team.Id) + Publish(message) + teamMember.Roles = "" teamMember.DeleteAt = model.GetMillis() @@ -361,10 +367,6 @@ func LeaveTeam(team *model.Team, user *model.User) *model.AppError { RemoveAllSessionsForUserId(user.Id) InvalidateCacheForUser(user.Id) - message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_LEAVE_TEAM, team.Id, "", "", nil) - message.Add("user_id", user.Id) - go Publish(message) - return nil } diff --git a/webapp/actions/websocket_actions.jsx b/webapp/actions/websocket_actions.jsx index c7010dcd4..431922b0d 100644 --- a/webapp/actions/websocket_actions.jsx +++ b/webapp/actions/websocket_actions.jsx @@ -211,10 +211,10 @@ function handleNewUserEvent(msg) { function handleLeaveTeamEvent(msg) { if (UserStore.getCurrentId() === msg.data.user_id) { - TeamStore.removeMyTeamMember(msg.broadcast.team_id); + TeamStore.removeMyTeamMember(msg.data.team_id); // if they are on the team being removed redirect them to the root - if (TeamStore.getCurrentId() === msg.broadcast.team_id) { + if (TeamStore.getCurrentId() === msg.data.team_id) { TeamStore.setCurrentId(''); Client.setTeamId(''); browserHistory.push('/'); diff --git a/webapp/stores/team_store.jsx b/webapp/stores/team_store.jsx index 8a3457a4d..858e2688e 100644 --- a/webapp/stores/team_store.jsx +++ b/webapp/stores/team_store.jsx @@ -176,11 +176,9 @@ class TeamStoreClass extends EventEmitter { } removeMyTeamMember(teamId) { - for (var index in this.my_team_members) { - if (this.my_team_members.hasOwnProperty(index)) { - if (this.my_team_members[index].team_id === teamId) { - Reflect.deleteProperty(this.my_team_members, index); - } + for (let i = 0; i < this.my_team_members.length; i++) { + if (this.my_team_members[i].team_id === teamId) { + this.my_team_members.splice(i, 1); } } } |