diff options
author | Tsilavina Razafinirina <t.razafinirina@gmail.com> | 2017-11-20 18:15:33 +0300 |
---|---|---|
committer | Harrison Healey <harrisonmhealey@gmail.com> | 2017-11-20 10:15:33 -0500 |
commit | ab6ef954b4acbd30ba87c2a7680e7843b946adca (patch) | |
tree | a3cd78018f1379412b6c80a8718324dc94182b64 /app/team.go | |
parent | 3836f9992056410e00041004132f5d53b4e43300 (diff) | |
download | chat-ab6ef954b4acbd30ba87c2a7680e7843b946adca.tar.gz chat-ab6ef954b4acbd30ba87c2a7680e7843b946adca.tar.bz2 chat-ab6ef954b4acbd30ba87c2a7680e7843b946adca.zip |
PLT-6217 Fixes system message posted to Town Square when a member leaves a team (#7752)
* Fixes system message posted to Town Square when adding/removing team member (#6483)
Fixes unit test method call to match RemoveUserFromTeam modification (#6483)
Fixes system message posted to Town Square when adding/removing team member (#6483)
Removes unnessary error message
* Updates system message when a user leaves a team (#6483)
* Changes system message when a user is removed from team (#6483)
* Adds a new string to be post to town-square when a member is added to a team (#6483)
Diffstat (limited to 'app/team.go')
-rw-r--r-- | app/team.go | 41 |
1 files changed, 38 insertions, 3 deletions
diff --git a/app/team.go b/app/team.go index 7b267f32a..c2d06513e 100644 --- a/app/team.go +++ b/app/team.go @@ -554,7 +554,7 @@ func (a *App) GetTeamUnread(teamId, userId string) (*model.TeamUnread, *model.Ap return teamUnread, nil } -func (a *App) RemoveUserFromTeam(teamId string, userId string) *model.AppError { +func (a *App) RemoveUserFromTeam(teamId string, userId string, requestorId string) *model.AppError { tchan := a.Srv.Store.Team().Get(teamId) uchan := a.Srv.Store.User().Get(userId) @@ -572,14 +572,14 @@ func (a *App) RemoveUserFromTeam(teamId string, userId string) *model.AppError { user = result.Data.(*model.User) } - if err := a.LeaveTeam(team, user); err != nil { + if err := a.LeaveTeam(team, user, requestorId); err != nil { return err } return nil } -func (a *App) LeaveTeam(team *model.Team, user *model.User) *model.AppError { +func (a *App) LeaveTeam(team *model.Team, user *model.User, requestorId string) *model.AppError { var teamMember *model.TeamMember var err *model.AppError @@ -609,6 +609,23 @@ func (a *App) LeaveTeam(team *model.Team, user *model.User) *model.AppError { } } + var channel *model.Channel + if result := <-a.Srv.Store.Channel().GetByName(team.Id, model.DEFAULT_CHANNEL, false); result.Err != nil { + return result.Err + } else { + channel = result.Data.(*model.Channel) + } + + if requestorId == user.Id { + if err := a.postLeaveTeamMessage(user, channel); err != nil { + l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err) + } + } else { + if err := a.PostRemoveFromChannelMessage(user.Id, user, channel); err != nil { + l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err) + } + } + // 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) @@ -637,6 +654,24 @@ func (a *App) LeaveTeam(team *model.Team, user *model.User) *model.AppError { return nil } +func (a *App) postLeaveTeamMessage(user *model.User, channel *model.Channel) *model.AppError { + post := &model.Post{ + ChannelId: channel.Id, + Message: fmt.Sprintf(utils.T("api.team.leave.left"), user.Username), + Type: model.POST_LEAVE_TEAM, + UserId: user.Id, + Props: model.StringInterface{ + "username": user.Username, + }, + } + + if _, err := a.CreatePost(post, channel, false); err != nil { + return model.NewAppError("postRemoveFromChannelMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, err.Error(), http.StatusInternalServerError) + } + + return nil +} + func (a *App) InviteNewUsersToTeam(emailList []string, teamId, senderId string) *model.AppError { if len(emailList) == 0 { err := model.NewAppError("InviteNewUsersToTeam", "api.team.invite_members.no_one.app_error", nil, "", http.StatusBadRequest) |