diff --git a/app/models/domain_block.rb b/app/models/domain_block.rb
index f26e8183ff..aea8919af8 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 e8b3a870d3..a6b3c4cdbf 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 169d2f7819..946b6d465c 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 70dfef9b2d..ea1929d44f 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 cc2ea05423..1ec727ca75 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