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)
Этот коммит содержится в:
коммит произвёл
Harrison Healey
родитель
3836f99920
Коммит
ab6ef954b4
@@ -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{
|
||||
|
||||
41
app/team.go
41
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)
|
||||
|
||||
Ссылка в новой задаче
Block a user