From e9a1a8d3d9ee9a952f5552fc708b0e3830b21dd1 Mon Sep 17 00:00:00 2001 From: Nick Frazier Date: Tue, 20 Dec 2016 08:56:45 -0500 Subject: GH-4685 Post a System Message when channel is renamed (#4762) * test changes * added system message when displayname changed * added test * gofmt --- api/channel.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'api/channel.go') diff --git a/api/channel.go b/api/channel.go index b8a52747d..e4786c616 100644 --- a/api/channel.go +++ b/api/channel.go @@ -251,6 +251,8 @@ func updateChannel(c *Context, w http.ResponseWriter, r *http.Request) { oldChannel.Header = channel.Header oldChannel.Purpose = channel.Purpose + oldChannelDisplayName := oldChannel.DisplayName + if len(channel.DisplayName) > 0 { oldChannel.DisplayName = channel.DisplayName } @@ -267,6 +269,9 @@ func updateChannel(c *Context, w http.ResponseWriter, r *http.Request) { c.Err = ucresult.Err return } else { + if oldChannelDisplayName != channel.DisplayName { + go PostUpdateChannelDisplayNameMessage(c, channel.Id, oldChannelDisplayName, channel.DisplayName) + } c.LogAudit("name=" + channel.Name) w.Write([]byte(oldChannel.ToJson())) } @@ -354,6 +359,34 @@ func PostUpdateChannelHeaderMessage(c *Context, channelId string, oldChannelHead } } +func PostUpdateChannelDisplayNameMessage(c *Context, channelId string, oldChannelDisplayName, newChannelDisplayName string) { + uc := Srv.Store.User().Get(c.Session.UserId) + + if uresult := <-uc; uresult.Err != nil { + l4g.Error(utils.T("api.channel.post_update_channel_displayname_message_and_forget.retrieve_user.error"), uresult.Err) + return + } else { + user := uresult.Data.(*model.User) + + message := fmt.Sprintf(utils.T("api.channel.post_update_channel_displayname_message_and_forget.updated_from"), user.Username, oldChannelDisplayName, newChannelDisplayName) + + post := &model.Post{ + ChannelId: channelId, + Message: message, + Type: model.POST_DISPLAYNAME_CHANGE, + UserId: c.Session.UserId, + Props: model.StringInterface{ + "old_displayname": oldChannelDisplayName, + "new_displayname": newChannelDisplayName, + }, + } + + if _, err := CreatePost(c, post, false); err != nil { + l4g.Error(utils.T("api.channel.post_update_channel_displayname_message_and_forget.create_post.error"), err) + } + } +} + func updateChannelPurpose(c *Context, w http.ResponseWriter, r *http.Request) { props := model.MapFromJson(r.Body) channelId := props["channel_id"] -- cgit v1.2.3-1-g7c22