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:
parent
0ad41be0f3
commit
06d905f415
5 changed files with 19 additions and 12 deletions
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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!
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue