Add filter to block sending some posts
This commit is contained in:
parent
401847d8cc
commit
4c08ce9d43
4 changed files with 26 additions and 6 deletions
|
@ -96,7 +96,7 @@ class StatusReachFinder
|
||||||
|
|
||||||
def banned_domains
|
def banned_domains
|
||||||
blocks = []
|
blocks = []
|
||||||
blocks << DomainBlock.where(reject_send_not_public_searchability: true).pluck(:domain) if @status.computed_searchability != 'public'
|
blocks << DomainBlock.where(reject_send_not_public_searchability: true).pluck(:domain) if @status.compute_searchability != 'public'
|
||||||
blocks << DomainBlock.where(reject_send_unlisted_dissubscribable: true).pluck(:domain) if @status.unlisted_visibility? && @status.account.dissubscribable
|
blocks << DomainBlock.where(reject_send_unlisted_dissubscribable: true).pluck(:domain) if @status.unlisted_visibility? && @status.account.dissubscribable
|
||||||
blocks << DomainBlock.where(reject_send_public_unlisted: true).pluck(:domain) if @status.public_unlisted_visibility?
|
blocks << DomainBlock.where(reject_send_public_unlisted: true).pluck(:domain) if @status.public_unlisted_visibility?
|
||||||
blocks << DomainBlock.where(reject_send_dissubscribable: true).pluck(:domain) if @status.account.dissubscribable
|
blocks << DomainBlock.where(reject_send_dissubscribable: true).pluck(:domain) if @status.account.dissubscribable
|
||||||
|
|
|
@ -26,17 +26,20 @@ class AccountStatusesFilter
|
||||||
scope.merge!(no_reblogs_scope) if exclude_reblogs?
|
scope.merge!(no_reblogs_scope) if exclude_reblogs?
|
||||||
scope.merge!(hashtag_scope) if tagged?
|
scope.merge!(hashtag_scope) if tagged?
|
||||||
|
|
||||||
|
scope.merge!(scope.where(searchability: :public)) if domain_block&.reject_send_not_public_searchability
|
||||||
|
scope.merge!(scope.where.not(visibility: :unlisted)) if domain_block&.reject_send_unlisted_dissubscribable && @account.dissubscribable
|
||||||
|
scope.merge!(scope.where.not(visibility: :public_unlisted)) if domain_block&.reject_send_public_unlisted
|
||||||
|
scope.merge!(scope.where(spoiler_text: ['', nil])) if domain_block&.reject_send_sensitive
|
||||||
|
|
||||||
scope
|
scope
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def initial_scope
|
def initial_scope
|
||||||
if suspended?
|
if suspended? || (domain_block&.reject_send_dissubscribable && @account.dissubscribable)
|
||||||
Status.none
|
Status.none
|
||||||
elsif domain_block != nil && (domain_block&.reject_send_not_public_searchability || domain_block&.reject_send_unlisted_dissubscribable ||
|
elsif domain_block&.reject_send_media
|
||||||
domain_block&.reject_send_public_unlisted || domain_block&.reject_send_media || domain_block&.reject_send_sensitive ||
|
|
||||||
domain_block&.reject_send_sensitive)
|
|
||||||
Status.none
|
Status.none
|
||||||
elsif anonymous?
|
elsif anonymous?
|
||||||
account.statuses.where(visibility: %i(public unlisted public_unlisted))
|
account.statuses.where(visibility: %i(public unlisted public_unlisted))
|
||||||
|
|
|
@ -49,7 +49,18 @@ class DomainBlock < ApplicationRecord
|
||||||
if suspend?
|
if suspend?
|
||||||
[:suspend]
|
[:suspend]
|
||||||
else
|
else
|
||||||
[severity.to_sym, reject_media? ? :reject_media : nil, reject_favourite? ? :reject_favourite : nil, reject_reply? ? :reject_reply : nil, reject_reports? ? :reject_reports : nil].reject { |policy| policy == :noop || policy.nil? }
|
[severity.to_sym,
|
||||||
|
reject_media? ? :reject_media : nil,
|
||||||
|
reject_favourite? ? :reject_favourite : nil,
|
||||||
|
reject_reply? ? :reject_reply : nil,
|
||||||
|
reject_send_not_public_searchability? ? :reject_send_not_public_searchability : nil,
|
||||||
|
reject_send_unlisted_dissubscribable? ? :reject_send_unlisted_dissubscribable : nil,
|
||||||
|
reject_send_public_unlisted? ? :reject_send_public_unlisted : nil,
|
||||||
|
reject_send_dissubscribable? ? :reject_send_dissubscribable : nil,
|
||||||
|
reject_send_media? ? :reject_send_media : nil,
|
||||||
|
reject_send_sensitive? ? :reject_send_sensitive : nil,
|
||||||
|
reject_reports? ? :reject_reports : nil
|
||||||
|
].reject { |policy| policy == :noop || policy.nil? }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -493,6 +493,12 @@ ja:
|
||||||
reject_media: メディアを拒否する
|
reject_media: メディアを拒否する
|
||||||
reject_reply: リプライを拒否
|
reject_reply: リプライを拒否
|
||||||
reject_reports: 通報を拒否
|
reject_reports: 通報を拒否
|
||||||
|
reject_send_dissubscribable: 購読拒否投稿配送なし
|
||||||
|
reject_send_media: メディア付き投稿配送なし
|
||||||
|
reject_send_not_public_searchability: 検索許可全て投稿配送なし
|
||||||
|
reject_send_public_unlisted: ローカル公開投稿配送なし
|
||||||
|
reject_send_sensitive: センシティブ投稿配送なし
|
||||||
|
reject_send_unlisted_dissubscribable: 購読拒否未収載投稿配送なし
|
||||||
silence: 制限
|
silence: 制限
|
||||||
suspend: サスペンド
|
suspend: サスペンド
|
||||||
policy: ポリシー
|
policy: ポリシー
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue