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 | ||||
|   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,6 +3,11 @@ | |||
| 
 | ||||
| = 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, | ||||
|       as: :boolean, | ||||
|       wrapper: :with_label, | ||||
|  |  | |||
|  | @ -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…
	
		Reference in a new issue