diff --git a/app/models/domain_block.rb b/app/models/domain_block.rb index f26e8183f..aea8919af 100644 --- a/app/models/domain_block.rb +++ b/app/models/domain_block.rb @@ -12,7 +12,7 @@ # class DomainBlock < ApplicationRecord - enum severity: [:silence, :suspend] + enum severity: [:silence, :suspend, :noop] attr_accessor :retroactive diff --git a/app/services/block_domain_service.rb b/app/services/block_domain_service.rb index e8b3a870d..a6b3c4cdb 100644 --- a/app/services/block_domain_service.rb +++ b/app/services/block_domain_service.rb @@ -11,16 +11,16 @@ class BlockDomainService < BaseService private def process_domain_block + clear_media! if domain_block.reject_media? if domain_block.silence? silence_accounts! - else + elsif domain_block.suspend? suspend_accounts! end end def silence_accounts! blocked_domain_accounts.in_batches.update_all(silenced: true) - clear_media! if domain_block.reject_media? end def clear_media! diff --git a/app/services/unblock_domain_service.rb b/app/services/unblock_domain_service.rb index 169d2f781..946b6d465 100644 --- a/app/services/unblock_domain_service.rb +++ b/app/services/unblock_domain_service.rb @@ -10,7 +10,7 @@ class UnblockDomainService < BaseService end def process_retroactive_updates - blocked_accounts.in_batches.update_all(update_options) + blocked_accounts.in_batches.update_all(update_options) unless domain_block.noop? end def blocked_accounts diff --git a/app/views/admin/domain_blocks/show.html.haml b/app/views/admin/domain_blocks/show.html.haml index 70dfef9b2..ea1929d44 100644 --- a/app/views/admin/domain_blocks/show.html.haml +++ b/app/views/admin/domain_blocks/show.html.haml @@ -3,13 +3,18 @@ = simple_form_for @domain_block, url: admin_domain_block_path(@domain_block), method: :delete do |f| - = f.input :retroactive, - as: :boolean, - wrapper: :with_label, - label: t(".retroactive.#{@domain_block.severity}"), - hint: t(:affected_accounts, - scope: [:admin, :domain_blocks, :show], - count: @domain_block.accounts_count) + - if (@domain_block.noop?) + = f.input :retroactive, + as: :hidden, + input_html: { :value => "0" } + - else + = f.input :retroactive, + as: :boolean, + wrapper: :with_label, + label: t(".retroactive.#{@domain_block.severity}"), + hint: t(:affected_accounts, + scope: [:admin, :domain_blocks, :show], + count: @domain_block.accounts_count) .actions = f.button :button, t('.undo'), type: :submit diff --git a/config/locales/en.yml b/config/locales/en.yml index cc2ea0542..1ec727ca7 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -108,13 +108,15 @@ en: create: Create block hint: The domain block will not prevent creation of account entries in the database, but will retroactively and automatically apply specific moderation methods on those accounts. severity: - desc_html: "Silence will make the account's posts invisible to anyone who isn't following them. Suspend will remove all of the account's content, media, and profile data." + desc_html: "Silence will make the account's posts invisible to anyone who isn't following them. Suspend will remove all of the account's content, media, and profile data. Use None if you just want to reject media files." + noop: None silence: Silence suspend: Suspend title: New domain block reject_media: Reject media files reject_media_hint: Removes locally stored media files and refuses to download any in the future. Irrelevant for suspensions severities: + noop: None silence: Silence suspend: Suspend severity: Severity