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