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)
Этот коммит содержится в:
Tsilavina Razafinirina
2017-11-20 18:15:33 +03:00
коммит произвёл Harrison Healey
родитель 3836f99920
Коммит ab6ef954b4
8 изменённых файлов: 81 добавлений и 12 удалений

Просмотреть файл

@@ -61,7 +61,7 @@ func (a *App) JoinDefaultChannels(teamId string, user *model.User, channelRole s
l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err)
}
} else {
if err := a.PostAddToChannelMessage(requestor, user, townSquare, ""); err != nil {
if err := a.PostAddToTeamMessage(requestor, user, townSquare, ""); err != nil {
l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err)
}
}
@@ -1006,10 +1006,30 @@ func (a *App) PostAddToChannelMessage(user *model.User, addedUser *model.User, c
return nil
}
func (a *App) PostAddToTeamMessage(user *model.User, addedUser *model.User, channel *model.Channel, postRootId string) *model.AppError {
post := &model.Post{
ChannelId: channel.Id,
Message: fmt.Sprintf(utils.T("api.team.add_user_to_team.added"), addedUser.Username, user.Username),
Type: model.POST_ADD_TO_TEAM,
UserId: user.Id,
RootId: postRootId,
Props: model.StringInterface{
"username": user.Username,
"addedUsername": addedUser.Username,
},
}
if _, err := a.CreatePost(post, channel, false); err != nil {
return model.NewAppError("postAddToTeamMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, err.Error(), http.StatusInternalServerError)
}
return nil
}
func (a *App) PostRemoveFromChannelMessage(removerUserId string, removedUser *model.User, channel *model.Channel) *model.AppError {
post := &model.Post{
ChannelId: channel.Id,
Message: fmt.Sprintf(utils.T("api.channel.remove_member.removed"), removedUser.Username),
Message: fmt.Sprintf(utils.T("api.team.remove_user_from_team.removed"), removedUser.Username),
Type: model.POST_REMOVE_FROM_CHANNEL,
UserId: removerUserId,
Props: model.StringInterface{

Просмотреть файл

@@ -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)