Allow domain blocks that only reject media without silencing or suspending (#4325)

* Allow domain blocks to reject media without silencing or suspending

* Fix typo

* Hide 'Reject media' button when superfluous, instead of disabling it

* Properly hide 'reject media' checkbox on page load if needed

This may happen when resubmitting the domain block form after an error.

* Don't ask whether undoing a media-only block should be retroactive

* Rename :media_only block to :noop

* Display :noop block as None in frontend, allow blocks that do nothing

* Remove 'coding' line auto-added by emacs
This commit is contained in:
sdukhovni 2017-07-24 22:26:55 +10:00 committed by Eugen Rochko
parent 0ad41be0f3
commit 06d905f415
5 changed files with 19 additions and 12 deletions

View file

@ -12,7 +12,7 @@
# #
class DomainBlock < ApplicationRecord class DomainBlock < ApplicationRecord
enum severity: [:silence, :suspend] enum severity: [:silence, :suspend, :noop]
attr_accessor :retroactive attr_accessor :retroactive

View file

@ -11,16 +11,16 @@ class BlockDomainService < BaseService
private private
def process_domain_block def process_domain_block
clear_media! if domain_block.reject_media?
if domain_block.silence? if domain_block.silence?
silence_accounts! silence_accounts!
else elsif domain_block.suspend?
suspend_accounts! suspend_accounts!
end end
end end
def silence_accounts! def silence_accounts!
blocked_domain_accounts.in_batches.update_all(silenced: true) blocked_domain_accounts.in_batches.update_all(silenced: true)
clear_media! if domain_block.reject_media?
end end
def clear_media! def clear_media!

View file

@ -10,7 +10,7 @@ class UnblockDomainService < BaseService
end end
def process_retroactive_updates 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 end
def blocked_accounts def blocked_accounts

View file

@ -3,6 +3,11 @@
= simple_form_for @domain_block, url: admin_domain_block_path(@domain_block), method: :delete do |f| = simple_form_for @domain_block, url: admin_domain_block_path(@domain_block), method: :delete do |f|
- if (@domain_block.noop?)
= f.input :retroactive,
as: :hidden,
input_html: { :value => "0" }
- else
= f.input :retroactive, = f.input :retroactive,
as: :boolean, as: :boolean,
wrapper: :with_label, wrapper: :with_label,

View file

@ -108,13 +108,15 @@ en:
create: Create block 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. 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: severity:
desc_html: "<strong>Silence</strong> will make the account's posts invisible to anyone who isn't following them. <strong>Suspend</strong> will remove all of the account's content, media, and profile data." desc_html: "<strong>Silence</strong> will make the account's posts invisible to anyone who isn't following them. <strong>Suspend</strong> will remove all of the account's content, media, and profile data. Use <strong>None</strong> if you just want to reject media files."
noop: None
silence: Silence silence: Silence
suspend: Suspend suspend: Suspend
title: New domain block title: New domain block
reject_media: Reject media files reject_media: Reject media files
reject_media_hint: Removes locally stored media files and refuses to download any in the future. Irrelevant for suspensions reject_media_hint: Removes locally stored media files and refuses to download any in the future. Irrelevant for suspensions
severities: severities:
noop: None
silence: Silence silence: Silence
suspend: Suspend suspend: Suspend
severity: Severity severity: Severity