diff options
Diffstat (limited to 'app/services/block_domain_service.rb')
-rw-r--r-- | app/services/block_domain_service.rb | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/app/services/block_domain_service.rb b/app/services/block_domain_service.rb index 497f0394b..154d00427 100644 --- a/app/services/block_domain_service.rb +++ b/app/services/block_domain_service.rb @@ -12,8 +12,11 @@ class BlockDomainService < BaseService def process_domain_block! clear_media! if domain_block.reject_media? + force_accounts_sensitive! if domain_block.force_sensitive? - if domain_block.silence? + if domain_block.force_unlisted? + force_accounts_unlisted! + elsif domain_block.silence? silence_accounts! elsif domain_block.suspend? suspend_accounts! @@ -28,6 +31,24 @@ class BlockDomainService < BaseService @affected_status_ids.each { |id| Rails.cache.delete_matched("statuses/#{id}-*") } end + def force_accounts_sensitive! + ApplicationRecord.transaction do + blocked_domain_accounts.in_batches.update_all(force_sensitive: true) + blocked_domain_accounts.reorder(nil).find_each do |account| + account.statuses.where(sensitive: false).in_batches.update_all(sensitive: true) + end + end + end + + def force_accounts_unlisted! + ApplicationRecord.transaction do + blocked_domain_accounts.in_batches.update_all(force_unlisted: true) + blocked_domain_accounts.reorder(nil).find_each do |account| + account.statuses.with_public_visibility.in_batches.update_all(visibility: :unlisted) + end + end + end + def silence_accounts! blocked_domain_accounts.without_silenced.in_batches.update_all(silenced_at: @domain_block.created_at) end @@ -44,7 +65,6 @@ class BlockDomainService < BaseService def suspend_accounts! blocked_domain_accounts.without_suspended.reorder(nil).find_each do |account| - UnsubscribeService.new.call(account) if account.subscribed? SuspendAccountService.new.call(account, suspended_at: @domain_block.created_at) end end |