diff --git a/app/models/domain_block.rb b/app/models/domain_block.rb index f26e818..aea8919 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 e8b3a87..a6b3c4c 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 169d2f7..946b6d4 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 70dfef9..ea1929d 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 cc2ea05..1ec727c 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