summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorSaturnino Abril <saturnino.abril@gmail.com>2017-04-19 05:15:15 +0900
committerJoram Wilander <jwawilander@gmail.com>2017-04-18 16:15:15 -0400
commitd2b86f1b8de4784baf578b611cf80779ccfa722a (patch)
tree076d56f2522c0d9580e04061db3cce99facce67b /app
parent8aab290d10cc7cdd864cebbd463044abfa2d2aea (diff)
downloadchat-d2b86f1b8de4784baf578b611cf80779ccfa722a.tar.gz
chat-d2b86f1b8de4784baf578b611cf80779ccfa722a.tar.bz2
chat-d2b86f1b8de4784baf578b611cf80779ccfa722a.zip
APIv4 POST /reactions (#6092)
* APIv4 POST /reactions * update corresponding V3 endpoint
Diffstat (limited to 'app')
-rw-r--r--app/reaction.go34
1 files changed, 34 insertions, 0 deletions
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)
+}