From 0cdf969ac71440cd52dd5b069a9068a9e5d49bd3 Mon Sep 17 00:00:00 2001 From: Tsilavina Razafinirina Date: Fri, 8 Dec 2017 22:15:33 +0300 Subject: PLT-6217-bis Fixes system message posted to Town Square when a user joins a team #7863 (#7864) * Adds new string post message when a user has joined a team (#6483) * Simplifies long if statement in post.go (#6483) --- app/channel.go | 20 +++++++++++++++++++- i18n/en.json | 4 ++++ model/post.go | 29 ++++++++++++++++++++++------- 3 files changed, 45 insertions(+), 8 deletions(-) diff --git a/app/channel.go b/app/channel.go index caaacea06..4dc1f349f 100644 --- a/app/channel.go +++ b/app/channel.go @@ -64,7 +64,7 @@ func (a *App) JoinDefaultChannels(teamId string, user *model.User, channelRole s } if requestor == nil { - if err := a.postJoinChannelMessage(user, townSquare); err != nil { + if err := a.postJoinTeamMessage(user, townSquare); err != nil { l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err) } } else { @@ -965,6 +965,24 @@ func (a *App) postJoinChannelMessage(user *model.User, channel *model.Channel) * return nil } +func (a *App) postJoinTeamMessage(user *model.User, channel *model.Channel) *model.AppError { + post := &model.Post{ + ChannelId: channel.Id, + Message: fmt.Sprintf(utils.T("api.team.join_team.post_and_forget"), user.Username), + Type: model.POST_JOIN_TEAM, + UserId: user.Id, + Props: model.StringInterface{ + "username": user.Username, + }, + } + + if _, err := a.CreatePost(post, channel, false); err != nil { + return model.NewAppError("postJoinTeamMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, err.Error(), http.StatusInternalServerError) + } + + return nil +} + func (a *App) LeaveChannel(channelId string, userId string) *model.AppError { sc := a.Srv.Store.Channel().Get(channelId, true) uc := a.Srv.Store.User().Get(userId) diff --git a/i18n/en.json b/i18n/en.json index 81bd6ca8a..f4ddaf217 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -2286,6 +2286,10 @@ "id": "api.team.is_team_creation_allowed.domain.app_error", "translation": "Email must be from a specific domain (e.g. @example.com). Please ask your systems administrator for details." }, + { + "id": "api.team.join_team.post_and_forget", + "translation": "%v joined the team." + }, { "id": "api.team.leave.left", "translation": "%v left the team." diff --git a/model/post.go b/model/post.go index b7b38e7ad..3873e6113 100644 --- a/model/post.go +++ b/model/post.go @@ -20,6 +20,7 @@ const ( POST_JOIN_LEAVE = "system_join_leave" // Deprecated, use POST_JOIN_CHANNEL or POST_LEAVE_CHANNEL instead POST_JOIN_CHANNEL = "system_join_channel" POST_LEAVE_CHANNEL = "system_leave_channel" + POST_JOIN_TEAM = "system_join_team" POST_LEAVE_TEAM = "system_leave_team" POST_ADD_REMOVE = "system_add_remove" // Deprecated, use POST_ADD_TO_CHANNEL or POST_REMOVE_FROM_CHANNEL instead POST_ADD_TO_CHANNEL = "system_add_to_channel" @@ -169,13 +170,27 @@ func (o *Post) IsValid() *AppError { return NewAppError("Post.IsValid", "model.post.is_valid.hashtags.app_error", nil, "id="+o.Id, http.StatusBadRequest) } - if !(o.Type == POST_DEFAULT || o.Type == POST_JOIN_LEAVE || o.Type == POST_ADD_REMOVE || - o.Type == POST_JOIN_CHANNEL || o.Type == POST_LEAVE_CHANNEL || o.Type == POST_LEAVE_TEAM || - o.Type == POST_REMOVE_FROM_CHANNEL || o.Type == POST_ADD_TO_CHANNEL || o.Type == POST_ADD_TO_TEAM || - o.Type == POST_SLACK_ATTACHMENT || o.Type == POST_HEADER_CHANGE || o.Type == POST_PURPOSE_CHANGE || - o.Type == POST_DISPLAYNAME_CHANGE || o.Type == POST_CHANNEL_DELETED || - strings.HasPrefix(o.Type, POST_CUSTOM_TYPE_PREFIX)) { - return NewAppError("Post.IsValid", "model.post.is_valid.type.app_error", nil, "id="+o.Type, http.StatusBadRequest) + switch o.Type { + case + POST_DEFAULT, + POST_JOIN_LEAVE, + POST_ADD_REMOVE, + POST_JOIN_CHANNEL, + POST_LEAVE_CHANNEL, + POST_LEAVE_TEAM, + POST_REMOVE_FROM_CHANNEL, + POST_ADD_TO_CHANNEL, + POST_ADD_TO_TEAM, + POST_JOIN_TEAM, + POST_SLACK_ATTACHMENT, + POST_HEADER_CHANGE, + POST_PURPOSE_CHANGE, + POST_DISPLAYNAME_CHANGE, + POST_CHANNEL_DELETED: + default: + if !strings.HasPrefix(o.Type, POST_CUSTOM_TYPE_PREFIX) { + return NewAppError("Post.IsValid", "model.post.is_valid.type.app_error", nil, "id="+o.Type, http.StatusBadRequest) + } } if utf8.RuneCountInString(ArrayToJson(o.Filenames)) > POST_FILENAMES_MAX_RUNES { -- cgit v1.2.3-1-g7c22