- # frozen_string_literal: true
-
- class BlockDomainService < BaseService
- def call(domain_block)
- if domain_block.silence?
- silence_accounts!(domain_block.domain)
- clear_media!(domain_block.domain) if domain_block.reject_media?
- else
- suspend_accounts!(domain_block.domain)
- end
- end
-
- private
-
- def silence_accounts!(domain)
- Account.where(domain: domain).update_all(silenced: true)
- end
-
- def clear_media!(domain)
- Account.where(domain: domain).find_each do |account|
- account.avatar.destroy
- account.header.destroy
- end
-
- MediaAttachment.where(account: Account.where(domain: domain)).find_each do |attachment|
- attachment.file.destroy
- end
- end
-
- def suspend_accounts!(domain)
- Account.where(domain: domain).where(suspended: false).find_each do |account|
- account.subscription(api_subscription_url(account.id)).unsubscribe if account.subscribed?
- SuspendAccountService.new.call(account)
- end
- end
- end
|