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 | 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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user