Move account suspension-related methods to concern (#28351)
This commit is contained in:
		
							parent
							
								
									1f5bd571cd
								
							
						
					
					
						commit
						bfabd6a2b8
					
				@ -89,6 +89,7 @@ class Account < ApplicationRecord
 | 
				
			|||||||
  include Account::Merging
 | 
					  include Account::Merging
 | 
				
			||||||
  include Account::Search
 | 
					  include Account::Search
 | 
				
			||||||
  include Account::StatusesSearch
 | 
					  include Account::StatusesSearch
 | 
				
			||||||
 | 
					  include Account::Suspensions
 | 
				
			||||||
  include Account::AttributionDomains
 | 
					  include Account::AttributionDomains
 | 
				
			||||||
  include DomainMaterializable
 | 
					  include DomainMaterializable
 | 
				
			||||||
  include DomainNormalizable
 | 
					  include DomainNormalizable
 | 
				
			||||||
@ -127,9 +128,7 @@ class Account < ApplicationRecord
 | 
				
			|||||||
  scope :local, -> { where(domain: nil) }
 | 
					  scope :local, -> { where(domain: nil) }
 | 
				
			||||||
  scope :partitioned, -> { order(Arel.sql('row_number() over (partition by domain)')) }
 | 
					  scope :partitioned, -> { order(Arel.sql('row_number() over (partition by domain)')) }
 | 
				
			||||||
  scope :silenced, -> { where.not(silenced_at: nil) }
 | 
					  scope :silenced, -> { where.not(silenced_at: nil) }
 | 
				
			||||||
  scope :suspended, -> { where.not(suspended_at: nil) }
 | 
					 | 
				
			||||||
  scope :sensitized, -> { where.not(sensitized_at: nil) }
 | 
					  scope :sensitized, -> { where.not(sensitized_at: nil) }
 | 
				
			||||||
  scope :without_suspended, -> { where(suspended_at: nil) }
 | 
					 | 
				
			||||||
  scope :without_silenced, -> { where(silenced_at: nil) }
 | 
					  scope :without_silenced, -> { where(silenced_at: nil) }
 | 
				
			||||||
  scope :without_instance_actor, -> { where.not(id: INSTANCE_ACTOR_ID) }
 | 
					  scope :without_instance_actor, -> { where.not(id: INSTANCE_ACTOR_ID) }
 | 
				
			||||||
  scope :recent, -> { reorder(id: :desc) }
 | 
					  scope :recent, -> { reorder(id: :desc) }
 | 
				
			||||||
@ -255,41 +254,6 @@ class Account < ApplicationRecord
 | 
				
			|||||||
    update!(silenced_at: nil)
 | 
					    update!(silenced_at: nil)
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def suspended?
 | 
					 | 
				
			||||||
    suspended_at.present? && !instance_actor?
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  def suspended_locally?
 | 
					 | 
				
			||||||
    suspended? && suspension_origin_local?
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  def suspended_permanently?
 | 
					 | 
				
			||||||
    suspended? && deletion_request.nil?
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  def suspended_temporarily?
 | 
					 | 
				
			||||||
    suspended? && deletion_request.present?
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  alias unavailable? suspended?
 | 
					 | 
				
			||||||
  alias permanently_unavailable? suspended_permanently?
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  def suspend!(date: Time.now.utc, origin: :local, block_email: true)
 | 
					 | 
				
			||||||
    transaction do
 | 
					 | 
				
			||||||
      create_deletion_request!
 | 
					 | 
				
			||||||
      update!(suspended_at: date, suspension_origin: origin)
 | 
					 | 
				
			||||||
      create_canonical_email_block! if block_email
 | 
					 | 
				
			||||||
    end
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  def unsuspend!
 | 
					 | 
				
			||||||
    transaction do
 | 
					 | 
				
			||||||
      deletion_request&.destroy!
 | 
					 | 
				
			||||||
      update!(suspended_at: nil, suspension_origin: nil)
 | 
					 | 
				
			||||||
      destroy_canonical_email_block!
 | 
					 | 
				
			||||||
    end
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  def sensitized?
 | 
					  def sensitized?
 | 
				
			||||||
    sensitized_at.present?
 | 
					    sensitized_at.present?
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										44
									
								
								app/models/concerns/account/suspensions.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								app/models/concerns/account/suspensions.rb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,44 @@
 | 
				
			|||||||
 | 
					# frozen_string_literal: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module Account::Suspensions
 | 
				
			||||||
 | 
					  extend ActiveSupport::Concern
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  included do
 | 
				
			||||||
 | 
					    scope :suspended, -> { where.not(suspended_at: nil) }
 | 
				
			||||||
 | 
					    scope :without_suspended, -> { where(suspended_at: nil) }
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def suspended?
 | 
				
			||||||
 | 
					    suspended_at.present? && !instance_actor?
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  alias unavailable? suspended?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def suspended_locally?
 | 
				
			||||||
 | 
					    suspended? && suspension_origin_local?
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def suspended_permanently?
 | 
				
			||||||
 | 
					    suspended? && deletion_request.nil?
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  alias permanently_unavailable? suspended_permanently?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def suspended_temporarily?
 | 
				
			||||||
 | 
					    suspended? && deletion_request.present?
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def suspend!(date: Time.now.utc, origin: :local, block_email: true)
 | 
				
			||||||
 | 
					    transaction do
 | 
				
			||||||
 | 
					      create_deletion_request!
 | 
				
			||||||
 | 
					      update!(suspended_at: date, suspension_origin: origin)
 | 
				
			||||||
 | 
					      create_canonical_email_block! if block_email
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def unsuspend!
 | 
				
			||||||
 | 
					    transaction do
 | 
				
			||||||
 | 
					      deletion_request&.destroy!
 | 
				
			||||||
 | 
					      update!(suspended_at: nil, suspension_origin: nil)
 | 
				
			||||||
 | 
					      destroy_canonical_email_block!
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user