From 13feb300a8977331c52c7787dd871f3ba52fac7b Mon Sep 17 00:00:00 2001 From: Kane York Date: Tue, 4 Aug 2020 18:51:28 -0700 Subject: [PATCH] FIX: Topic map was incorrectly counting assign actions (#10360) The assign plugin is one of two situations where a post can be both a whisper and a small-action. Check the action_code field to filter out small-actions. --- lib/topic_view.rb | 8 ++------ spec/components/topic_view_spec.rb | 2 ++ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/topic_view.rb b/lib/topic_view.rb index b2f37ccf616..537a53fccc5 100644 --- a/lib/topic_view.rb +++ b/lib/topic_view.rb @@ -366,11 +366,6 @@ class TopicView if is_mega_topic? {} else - post_types = [Post.types[:regular], Post.types[:moderator_action]] - if @guardian.can_see_whispers?(@topic) - post_types << Post.types[:whisper] - end - sql = <<~SQL SELECT user_id, count(*) AS count_all FROM posts @@ -378,12 +373,13 @@ class TopicView AND post_type IN (:post_types) AND user_id IS NOT NULL AND posts.deleted_at IS NULL + AND action_code IS NULL GROUP BY user_id ORDER BY count_all DESC LIMIT #{MAX_PARTICIPANTS} SQL - Hash[*DB.query_single(sql, topic_id: @topic.id, post_types: post_types)] + Hash[*DB.query_single(sql, topic_id: @topic.id, post_types: Topic.visible_post_types(@guardian&.user))] end end end diff --git a/spec/components/topic_view_spec.rb b/spec/components/topic_view_spec.rb index 0d51b1ef3fa..508ba36fc6d 100644 --- a/spec/components/topic_view_spec.rb +++ b/spec/components/topic_view_spec.rb @@ -286,6 +286,8 @@ describe TopicView do context '.post_counts_by_user' do it 'returns the two posters with their appropriate counts' do Fabricate(:post, topic: topic, user: evil_trout, post_type: Post.types[:whisper]) + # Should not be counted + Fabricate(:post, topic: topic, user: evil_trout, post_type: Post.types[:whisper], action_code: 'assign') expect(TopicView.new(topic.id, admin).post_counts_by_user.to_a).to match_array([[first_poster.id, 2], [evil_trout.id, 2]])