Revert "FEATURE: Count only approved flagged posts in user pages (#22799)" (#23962)

This reverts commit 5f0bc4557f.

Through extensive internal discussion we have decided to revert
this change, as it significantly impacted moderation flow for
some Discourse site moderators, especially around "something else"
flags. We need to re-approach how flags are counted holistically,
so to that end this change is being reverted.
This commit is contained in:
Martin Brennan 2023-10-18 11:38:17 +10:00 committed by GitHub
parent 30778e5fa4
commit e91d8feab3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 15 additions and 102 deletions

View File

@ -724,7 +724,7 @@
@query={{hash
username=this.model.username
type="ReviewableFlaggedPost"
status="approved"
status="all"
}}
class="btn"
>

View File

@ -38,7 +38,7 @@
@route="review"
@query={{hash
username=this.model.username
status="approved"
status="all"
type="ReviewableFlaggedPost"
}}
>

View File

@ -1194,6 +1194,13 @@ class User < ActiveRecord::Base
user_warnings.count
end
def flags_received_count
posts
.includes(:post_actions)
.where("post_actions.post_action_type_id" => PostActionType.flag_types_without_custom.values)
.count
end
def private_topics_count
topics_allowed.where(archetype: Archetype.private_message).count
end
@ -1520,14 +1527,8 @@ class User < ActiveRecord::Base
end
def number_of_flagged_posts
posts
.with_deleted
.includes(:post_actions)
.where("post_actions.post_action_type_id" => PostActionType.flag_types_without_custom.values)
.where("post_actions.agreed_at IS NOT NULL")
.count
ReviewableFlaggedPost.where(target_created_by: self.id).count
end
alias_method :flags_received_count, :number_of_flagged_posts
def number_of_rejected_posts
ReviewableQueuedPost.rejected.where(target_created_by_id: self.id).count

View File

@ -1994,43 +1994,16 @@ RSpec.describe User do
end
describe "#number_of_flagged_posts" do
fab!(:admin) { Fabricate(:admin) }
it "counts flagged posts from the user" do
Fabricate(:reviewable_flagged_post, target_created_by: user)
it "counts only approved standard flagged posts from the user" do
%i[disagree ignore delete_and_ignore].each do |review_action|
PostActionCreator
.off_topic(admin, Fabricate(:post, user: user))
.reviewable
.perform(admin, review_action)
end
%i[agree_and_keep delete_and_agree].each do |approval_action|
PostActionCreator
.off_topic(admin, Fabricate(:post, user: user))
.reviewable
.perform(admin, approval_action)
end
expect(user.number_of_flagged_posts).to eq 2
end
it "ignores custom flags from the user" do
PostActionCreator
.notify_moderators(admin, Fabricate(:post, user: user))
.reviewable
.perform(admin, :agree_and_keep)
expect(user.number_of_flagged_posts).to be_zero
expect(user.number_of_flagged_posts).to eq(1)
end
it "ignores flagged posts from another user" do
other_user = Fabricate(:user)
%i[disagree ignore delete_and_ignore agree_and_keep].each do |review_action|
PostActionCreator
.off_topic(admin, Fabricate(:post, user: other_user))
.reviewable
.perform(admin, review_action)
end
Fabricate(:reviewable_flagged_post, target_created_by: Fabricate(:user))
expect(user.number_of_flagged_posts).to be_zero
expect(user.number_of_flagged_posts).to eq(0)
end
end
end

View File

@ -52,28 +52,6 @@ module PageObjects
self
end
def has_reviewable_flagged_posts_path?(user)
params = {
status: "approved",
sort_order: "score",
type: "ReviewableFlaggedPost",
username: user.username,
}
page.has_current_path?("/review?#{params.to_query}")
end
def staff_info_flagged_posts_counter
page.find(".staff-counters .flagged-posts")
end
def has_staff_info_flagged_posts_count?(count:)
staff_info_flagged_posts_counter.text.to_i == count
end
def has_no_staff_info_flagged_posts_counter?
page.has_no_css?(".staff-counters .flagged-posts")
end
private
def primary_navigation_selector(name)

View File

@ -17,43 +17,4 @@ describe "Viewing user staff info as an admin", type: :system do
expect(user_page).to have_warning_messages_path(user)
end
end
context "for flagged posts" do
before do
%i[disagree ignore delete_and_ignore].each do |review_action|
PostActionCreator
.off_topic(admin, Fabricate(:post, user: user))
.reviewable
.perform(admin, review_action)
end
end
context "when there are no approved flagged posts" do
it "should not display a flagged-posts staff counter" do
user_page.visit(user)
expect(user_page).to have_no_staff_info_flagged_posts_counter
end
end
context "when there are approved flagged posts" do
before do
2.times do
PostActionCreator
.off_topic(admin, Fabricate(:post, user: user))
.reviewable
.perform(admin, :agree_and_keep)
end
end
it "should display a flagged-posts staff counter with the right count and link to user's flagged posts" do
user_page.visit(user)
expect(user_page).to have_staff_info_flagged_posts_count(count: 2)
user_page.staff_info_flagged_posts_counter.click
expect(user_page).to have_reviewable_flagged_posts_path(user)
end
end
end
end