summaryrefslogtreecommitdiffstats
path: root/app/team.go
diff options
context:
space:
mode:
authorTsilavina Razafinirina <t.razafinirina@gmail.com>2017-11-20 18:15:33 +0300
committerHarrison Healey <harrisonmhealey@gmail.com>2017-11-20 10:15:33 -0500
commitab6ef954b4acbd30ba87c2a7680e7843b946adca (patch)
treea3cd78018f1379412b6c80a8718324dc94182b64 /app/team.go
parent3836f9992056410e00041004132f5d53b4e43300 (diff)
downloadchat-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.go41
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)