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
					
				@ -12,7 +12,7 @@
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
class DomainBlock < ApplicationRecord
 | 
			
		||||
  enum severity: [:silence, :suspend]
 | 
			
		||||
  enum severity: [:silence, :suspend, :noop]
 | 
			
		||||
 | 
			
		||||
  attr_accessor :retroactive
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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!
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
@ -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: "<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
 | 
			
		||||
          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
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user