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:
		@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user