mirror of
https://github.com/discourse/discourse.git
synced 2024-11-23 06:04:11 +08:00
FIX: do not mark post as spam if the previous flag was disagreed
This commit is contained in:
parent
0547fcf799
commit
a439500bac
|
@ -655,7 +655,9 @@ class User < ActiveRecord::Base
|
|||
# Flag all posts from a user as spam
|
||||
def flag_linked_posts_as_spam
|
||||
admin = Discourse.system_user
|
||||
topic_links.includes(:post).each do |tl|
|
||||
|
||||
disagreed_flag_post_ids = PostAction.where(post_action_type_id: PostActionType.types[:spam]).where.not(disagreed_at: nil).pluck(:post_id)
|
||||
topic_links.includes(:post).where.not(post_id: disagreed_flag_post_ids).each do |tl|
|
||||
begin
|
||||
PostAction.act(admin, tl.post, PostActionType.types[:spam], message: I18n.t('flag_reason.spam_hosts'))
|
||||
rescue PostAction::AlreadyActed
|
||||
|
|
|
@ -705,7 +705,19 @@ describe User do
|
|||
|
||||
# It doesn't raise an exception if called again
|
||||
user.flag_linked_posts_as_spam
|
||||
end
|
||||
|
||||
it "does not flags post as spam if the previous flag for that post was disagreed" do
|
||||
user.flag_linked_posts_as_spam
|
||||
|
||||
post.reload
|
||||
expect(post.spam_count).to eq(1)
|
||||
|
||||
PostAction.clear_flags!(post, admin)
|
||||
user.flag_linked_posts_as_spam
|
||||
|
||||
post.reload
|
||||
expect(post.spam_count).to eq(0)
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue
Block a user