Prevent delivery of posts to (even more) suspended followers (#33030)

This commit is contained in:
David Roetzel 2024-11-22 16:58:48 +01:00 committed by GitHub
parent 2e66dd09e2
commit 21a8612aab
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -17,8 +17,7 @@ class StatusReachFinder
def reached_account_inboxes def reached_account_inboxes
scope = Account.where(id: reached_account_ids) scope = Account.where(id: reached_account_ids)
scope.merge!(Account.without_suspended) unless unsafe? inboxes_without_suspended_for(scope)
scope.inboxes
end end
def reached_account_ids def reached_account_ids
@ -71,13 +70,8 @@ class StatusReachFinder
end end
def followers_inboxes def followers_inboxes
if @status.in_reply_to_local_account? && distributable? scope = followers_scope
@status.account.followers.or(@status.thread.account.followers.not_domain_blocked_by_account(@status.account)).inboxes inboxes_without_suspended_for(scope)
elsif @status.direct_visibility? || @status.limited_visibility?
[]
else
@status.account.followers.inboxes
end
end end
def relay_inboxes def relay_inboxes
@ -95,4 +89,19 @@ class StatusReachFinder
def unsafe? def unsafe?
@options[:unsafe] @options[:unsafe]
end end
def followers_scope
if @status.in_reply_to_local_account? && distributable?
@status.account.followers.or(@status.thread.account.followers.not_domain_blocked_by_account(@status.account))
elsif @status.direct_visibility? || @status.limited_visibility?
Account.none
else
@status.account.followers
end
end
def inboxes_without_suspended_for(scope)
scope.merge!(Account.without_suspended) unless unsafe?
scope.inboxes
end
end end