summaryrefslogtreecommitdiffstats
path: root/app/post.go
diff options
context:
space:
mode:
authorSaturnino Abril <saturnino.abril@gmail.com>2017-03-30 00:06:51 +0900
committerCorey Hulen <corey@hulen.com>2017-03-29 08:06:51 -0700
commit2f15523fe88c3a382abda1e64b2ef962c3ab5128 (patch)
treeb82d0f98d68c16fd23e886072f8a513d8450bef0 /app/post.go
parent31830ffc7b578de643f5748227e4b783ee0782dd (diff)
downloadchat-2f15523fe88c3a382abda1e64b2ef962c3ab5128.tar.gz
chat-2f15523fe88c3a382abda1e64b2ef962c3ab5128.tar.bz2
chat-2f15523fe88c3a382abda1e64b2ef962c3ab5128.zip
APIv4 put /posts/{post_id}/patch (#5883)
* APIv4 put /posts/{post_id}/patch * Add props and edit permission
Diffstat (limited to 'app/post.go')
-rw-r--r--app/post.go35
1 files changed, 31 insertions, 4 deletions
diff --git a/app/post.go b/app/post.go
index bfd0fccc5..375b775e8 100644
--- a/app/post.go
+++ b/app/post.go
@@ -299,18 +299,19 @@ func UpdatePost(post *model.Post) (*model.Post, *model.AppError) {
*newPost = *oldPost
newPost.Message = post.Message
+ newPost.Props = post.Props
newPost.EditAt = model.GetMillis()
newPost.Hashtags, _ = model.ParseHashtags(post.Message)
+ newPost.IsPinned = post.IsPinned
+ newPost.HasReactions = post.HasReactions
+ newPost.FileIds = post.FileIds
if result := <-Srv.Store.Post().Update(newPost, oldPost); result.Err != nil {
return nil, result.Err
} else {
rpost := result.Data.(*model.Post)
- message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_POST_EDITED, "", rpost.ChannelId, "", nil)
- message.Add("post", rpost.ToJson())
-
- go Publish(message)
+ sendUpdatedPostEvent(rpost)
InvalidateCacheForChannelPosts(rpost.ChannelId)
@@ -318,6 +319,32 @@ func UpdatePost(post *model.Post) (*model.Post, *model.AppError) {
}
}
+func PatchPost(postId string, patch *model.PostPatch) (*model.Post, *model.AppError) {
+ post, err := GetSinglePost(postId)
+ if err != nil {
+ return nil, err
+ }
+
+ post.Patch(patch)
+
+ updatedPost, err := UpdatePost(post)
+ if err != nil {
+ return nil, err
+ }
+
+ sendUpdatedPostEvent(updatedPost)
+ InvalidateCacheForChannelPosts(updatedPost.ChannelId)
+
+ return updatedPost, nil
+}
+
+func sendUpdatedPostEvent(post *model.Post) {
+ message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_POST_EDITED, "", post.ChannelId, "", nil)
+ message.Add("post", post.ToJson())
+
+ go Publish(message)
+}
+
func GetPostsPage(channelId string, page int, perPage int) (*model.PostList, *model.AppError) {
if result := <-Srv.Store.Post().GetPosts(channelId, page*perPage, perPage, true); result.Err != nil {
return nil, result.Err