FIX: Topic map was incorrectly counting assign actions (#10360)

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.

diff --git a/lib/topic_view.rb b/lib/topic_view.rb
index b2f37cc..537a53f 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 0d51b1e..508ba36 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]])
 

GitHub sha: 13feb300

1 Like

This commit appears in #10360 which was merged by SamSaffron.