diff --git a/lib/composer_messages_finder.rb b/lib/composer_messages_finder.rb index 01b94cf896a..a74820cc078 100644 --- a/lib/composer_messages_finder.rb +++ b/lib/composer_messages_finder.rb @@ -238,7 +238,7 @@ class ComposerMessagesFinder return if post.blank? - flags = post.flags.group(:user_id).count + flags = post.flags.active.group(:user_id).count flagged_by_replier = flags[@user.id].to_i > 0 flagged_by_others = flags.values.sum >= SiteSetting.dont_feed_the_trolls_threshold diff --git a/spec/lib/composer_messages_finder_spec.rb b/spec/lib/composer_messages_finder_spec.rb index b6ab99a1acd..7a7785215ae 100644 --- a/spec/lib/composer_messages_finder_spec.rb +++ b/spec/lib/composer_messages_finder_spec.rb @@ -339,6 +339,7 @@ RSpec.describe ComposerMessagesFinder do fab!(:self_flagged_post) { Fabricate(:post, topic: topic, user: author) } fab!(:under_flagged_post) { Fabricate(:post, topic: topic, user: author) } fab!(:over_flagged_post) { Fabricate(:post, topic: topic, user: author) } + fab!(:resolved_flag_post) { Fabricate(:post, topic: topic, user: author) } before { SiteSetting.dont_feed_the_trolls_threshold = 2 } @@ -383,6 +384,20 @@ RSpec.describe ComposerMessagesFinder do expect(finder.check_dont_feed_the_trolls).to be_blank end + it "does not show a message when the flag has already been resolved" do + SiteSetting.dont_feed_the_trolls_threshold = 1 + + Fabricate(:flag, post: resolved_flag_post, user: other_user, disagreed_at: 1.hour.ago) + finder = + ComposerMessagesFinder.new( + user, + composer_action: "reply", + topic_id: topic.id, + post_id: resolved_flag_post.id, + ) + expect(finder.check_dont_feed_the_trolls).to be_blank + end + it "shows a message when enough others have already flagged the post" do Fabricate(:flag, post: over_flagged_post, user: other_user) Fabricate(:flag, post: over_flagged_post, user: third_user)