From b160331d41157c554ddae3fe8ec832be43ed739c Mon Sep 17 00:00:00 2001 From: Bianca Nenciu Date: Mon, 22 Aug 2022 18:40:09 +0300 Subject: [PATCH] FIX: Move show like logic to client side (#18025) The logic was added in commit ec8306835dcadf24a0d0ff83767016bbaefa8fa4, to show the like action even if the user could not like the post. It is not necessary for this logic to be implemented on the server side. --- .../javascripts/discourse/app/lib/transform-post.js | 7 +++++-- app/serializers/post_serializer.rb | 3 +-- spec/serializers/post_serializer_spec.rb | 8 -------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/app/assets/javascripts/discourse/app/lib/transform-post.js b/app/assets/javascripts/discourse/app/lib/transform-post.js index e7f44c5afc..37325972de 100644 --- a/app/assets/javascripts/discourse/app/lib/transform-post.js +++ b/app/assets/javascripts/discourse/app/lib/transform-post.js @@ -255,9 +255,12 @@ export default function transformPost( if (likeAction) { postAtts.liked = likeAction.acted; postAtts.canToggleLike = likeAction.get("canToggle"); - postAtts.showLike = true; + postAtts.showLike = postAtts.liked || postAtts.canToggleLike; postAtts.likeCount = likeAction.count; - } else if (!currentUser) { + } else if ( + !currentUser || + (topic.archived && topic.user_id !== currentUser.id) + ) { postAtts.showLike = true; } diff --git a/app/serializers/post_serializer.rb b/app/serializers/post_serializer.rb index 338a3f2f9e..8f0bebf4c5 100644 --- a/app/serializers/post_serializer.rb +++ b/app/serializers/post_serializer.rb @@ -315,8 +315,7 @@ class PostSerializer < BasicPostSerializer summary.delete(:count) if summary[:count] == 0 # Only include it if the user can do it or it has a count - # If it is a like, we want to show it always (even for archived topic) - if summary[:can_act] || summary[:count] || (sym == :like && object.user_id != scope.user&.id) + if summary[:can_act] || summary[:count] result << summary end end diff --git a/spec/serializers/post_serializer_spec.rb b/spec/serializers/post_serializer_spec.rb index 50f39b2642..23c3123ad7 100644 --- a/spec/serializers/post_serializer_spec.rb +++ b/spec/serializers/post_serializer_spec.rb @@ -55,14 +55,6 @@ RSpec.describe PostSerializer do expect(notify_user_action).to eq(nil) end - - it "shows like for archived topics even if user cannot act" do - post = Fabricate(:post) - post.topic.update!(archived: true) - - serializer = PostSerializer.new(post, scope: Guardian.new(actor), root: false) - expect(serializer.as_json[:actions_summary].map { |a| a[:id] }).to include(PostActionType.types[:like]) - end end context "with a post with reviewable content" do