From d2b86f1b8de4784baf578b611cf80779ccfa722a Mon Sep 17 00:00:00 2001 From: Saturnino Abril Date: Wed, 19 Apr 2017 05:15:15 +0900 Subject: APIv4 POST /reactions (#6092) * APIv4 POST /reactions * update corresponding V3 endpoint --- app/reaction.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'app') diff --git a/app/reaction.go b/app/reaction.go index cc31018ec..eb542286f 100644 --- a/app/reaction.go +++ b/app/reaction.go @@ -7,6 +7,25 @@ import ( "github.com/mattermost/platform/model" ) +func SaveReactionForPost(reaction *model.Reaction) (*model.Reaction, *model.AppError) { + post, err := GetSinglePost(reaction.PostId) + if err != nil { + return nil, err + } + + if result := <-Srv.Store.Reaction().Save(reaction); result.Err != nil { + return nil, result.Err + } else { + reaction = result.Data.(*model.Reaction) + + go sendReactionEvent(model.WEBSOCKET_EVENT_REACTION_ADDED, reaction, post) + + InvalidateCacheForReactions(reaction.PostId) + + return reaction, nil + } +} + func GetReactionsForPost(postId string) ([]*model.Reaction, *model.AppError) { if result := <-Srv.Store.Reaction().GetForPost(postId, true); result.Err != nil { return nil, result.Err @@ -14,3 +33,18 @@ func GetReactionsForPost(postId string) ([]*model.Reaction, *model.AppError) { return result.Data.([]*model.Reaction), nil } } + +func sendReactionEvent(event string, reaction *model.Reaction, post *model.Post) { + // send out that a reaction has been added/removed + message := model.NewWebSocketEvent(event, "", post.ChannelId, "", nil) + message.Add("reaction", reaction.ToJson()) + Publish(message) + + // The post is always modified since the UpdateAt always changes + InvalidateCacheForChannelPosts(post.ChannelId) + post.HasReactions = true + post.UpdateAt = model.GetMillis() + umessage := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_POST_EDITED, "", post.ChannelId, "", nil) + umessage.Add("post", post.ToJson()) + Publish(umessage) +} -- cgit v1.2.3-1-g7c22