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