From 18d29a19e5ec7e4b52a79ec77bff6cc9a63cd5e9 Mon Sep 17 00:00:00 2001 From: Florian Orben Date: Fri, 4 Dec 2015 03:39:37 +0100 Subject: PLT-1380: Post system message when user updates channel header --- api/channel.go | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'api/channel.go') diff --git a/api/channel.go b/api/channel.go index 6fa6ec295..659121bf0 100644 --- a/api/channel.go +++ b/api/channel.go @@ -268,19 +268,51 @@ func updateChannelHeader(c *Context, w http.ResponseWriter, r *http.Request) { if !c.HasPermissionsToTeam(channel.TeamId, "updateChannelHeader") { return } - + oldChannelHeader := channel.Header channel.Header = channelHeader if ucresult := <-Srv.Store.Channel().Update(channel); ucresult.Err != nil { c.Err = ucresult.Err return } else { + PostUpdateChannelHeaderMessageAndForget(c, channel.Id, oldChannelHeader, channelHeader) c.LogAudit("name=" + channel.Name) w.Write([]byte(channel.ToJson())) } } } +func PostUpdateChannelHeaderMessageAndForget(c *Context, channelId string, oldChannelHeader, newChannelHeader string) { + go func() { + uc := Srv.Store.User().Get(c.Session.UserId) + + if uresult := <-uc; uresult.Err != nil { + l4g.Error("Failed to retrieve user while trying to save update channel header message %v", uresult.Err) + return + } else { + user := uresult.Data.(*model.User) + + var message string + if oldChannelHeader == "" { + message = fmt.Sprintf("%s updated the channel header to: %s", user.Username, newChannelHeader) + } else if newChannelHeader == "" { + message = fmt.Sprintf("%s removed the channel header (was: %s)", user.Username, oldChannelHeader) + } else { + message = fmt.Sprintf("%s updated the channel header from: %s to: %s", user.Username, oldChannelHeader, newChannelHeader) + } + + post := &model.Post{ + ChannelId: channelId, + Message: message, + Type: model.POST_HEADER_CHANGE, + } + if _, err := CreatePost(c, post, false); err != nil { + l4g.Error("Failed to post join/leave message %v", 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