Refactoring relations_map (#24195)
This commit is contained in:
		
							parent
							
								
									9f8d1601a4
								
							
						
					
					
						commit
						38c84f57b6
					
				@ -292,6 +292,21 @@ module AccountInteractions
 | 
				
			|||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def relations_map(account_ids, domains = nil, **options)
 | 
				
			||||||
 | 
					    relations = {
 | 
				
			||||||
 | 
					      blocked_by: Account.blocked_by_map(account_ids, id),
 | 
				
			||||||
 | 
					      following: Account.following_map(account_ids, id),
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return relations if options[:skip_blocking_and_muting]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    relations.merge!({
 | 
				
			||||||
 | 
					      blocking: Account.blocking_map(account_ids, id),
 | 
				
			||||||
 | 
					      muting: Account.muting_map(account_ids, id),
 | 
				
			||||||
 | 
					      domain_blocking_by_domain: Account.domain_blocking_map_by_domain(domains, id),
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private
 | 
					  private
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def remove_potential_friendship(other_account)
 | 
					  def remove_potential_friendship(other_account)
 | 
				
			||||||
 | 
				
			|||||||
@ -79,7 +79,7 @@ module StatusThreadingConcern
 | 
				
			|||||||
    statuses    = Status.with_accounts(ids).to_a
 | 
					    statuses    = Status.with_accounts(ids).to_a
 | 
				
			||||||
    account_ids = statuses.map(&:account_id).uniq
 | 
					    account_ids = statuses.map(&:account_id).uniq
 | 
				
			||||||
    domains     = statuses.filter_map(&:account_domain).uniq
 | 
					    domains     = statuses.filter_map(&:account_domain).uniq
 | 
				
			||||||
    relations   = relations_map_for_account(account, account_ids, domains)
 | 
					    relations   = account&.relations_map(account_ids, domains) || {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    statuses.reject! { |status| StatusFilter.new(status, account, relations).filtered? }
 | 
					    statuses.reject! { |status| StatusFilter.new(status, account, relations).filtered? }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -108,16 +108,4 @@ module StatusThreadingConcern
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    arr
 | 
					    arr
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					 | 
				
			||||||
  def relations_map_for_account(account, account_ids, domains)
 | 
					 | 
				
			||||||
    return {} if account.nil?
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      blocking: Account.blocking_map(account_ids, account.id),
 | 
					 | 
				
			||||||
      blocked_by: Account.blocked_by_map(account_ids, account.id),
 | 
					 | 
				
			||||||
      muting: Account.muting_map(account_ids, account.id),
 | 
					 | 
				
			||||||
      following: Account.following_map(account_ids, account.id),
 | 
					 | 
				
			||||||
      domain_blocking_by_domain: Account.domain_blocking_map_by_domain(domains, account.id),
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
				
			|||||||
@ -120,7 +120,7 @@ class ImportService < BaseService
 | 
				
			|||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    account_ids         = statuses.map(&:account_id)
 | 
					    account_ids         = statuses.map(&:account_id)
 | 
				
			||||||
    preloaded_relations = relations_map_for_account(@account, account_ids)
 | 
					    preloaded_relations = @account.relations_map(account_ids, skip_blocking_and_muting: true)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    statuses.keep_if { |status| StatusPolicy.new(@account, status, preloaded_relations).show? }
 | 
					    statuses.keep_if { |status| StatusPolicy.new(@account, status, preloaded_relations).show? }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -138,14 +138,4 @@ class ImportService < BaseService
 | 
				
			|||||||
  def import_data
 | 
					  def import_data
 | 
				
			||||||
    Paperclip.io_adapters.for(@import.data).read.force_encoding(Encoding::UTF_8)
 | 
					    Paperclip.io_adapters.for(@import.data).read.force_encoding(Encoding::UTF_8)
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					 | 
				
			||||||
  def relations_map_for_account(account, account_ids)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      blocking: {},
 | 
					 | 
				
			||||||
      blocked_by: Account.blocked_by_map(account_ids, account.id),
 | 
					 | 
				
			||||||
      muting: {},
 | 
					 | 
				
			||||||
      following: Account.following_map(account_ids, account.id),
 | 
					 | 
				
			||||||
      domain_blocking_by_domain: {},
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
				
			|||||||
@ -49,7 +49,7 @@ class SearchService < BaseService
 | 
				
			|||||||
    results             = definition.limit(@limit).offset(@offset).objects.compact
 | 
					    results             = definition.limit(@limit).offset(@offset).objects.compact
 | 
				
			||||||
    account_ids         = results.map(&:account_id)
 | 
					    account_ids         = results.map(&:account_id)
 | 
				
			||||||
    account_domains     = results.map(&:account_domain)
 | 
					    account_domains     = results.map(&:account_domain)
 | 
				
			||||||
    preloaded_relations = relations_map_for_account(@account, account_ids, account_domains)
 | 
					    preloaded_relations = @account.relations_map(account_ids, account_domains)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    results.reject { |status| StatusFilter.new(status, @account, preloaded_relations).filtered? }
 | 
					    results.reject { |status| StatusFilter.new(status, @account, preloaded_relations).filtered? }
 | 
				
			||||||
  rescue Faraday::ConnectionFailed, Parslet::ParseFailed
 | 
					  rescue Faraday::ConnectionFailed, Parslet::ParseFailed
 | 
				
			||||||
@ -111,16 +111,6 @@ class SearchService < BaseService
 | 
				
			|||||||
    @options[:type].blank? || @options[:type] == 'statuses'
 | 
					    @options[:type].blank? || @options[:type] == 'statuses'
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def relations_map_for_account(account, account_ids, domains)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      blocking: Account.blocking_map(account_ids, account.id),
 | 
					 | 
				
			||||||
      blocked_by: Account.blocked_by_map(account_ids, account.id),
 | 
					 | 
				
			||||||
      muting: Account.muting_map(account_ids, account.id),
 | 
					 | 
				
			||||||
      following: Account.following_map(account_ids, account.id),
 | 
					 | 
				
			||||||
      domain_blocking_by_domain: Account.domain_blocking_map_by_domain(domains, account.id),
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  def parsed_query
 | 
					  def parsed_query
 | 
				
			||||||
    SearchQueryTransformer.new.apply(SearchQueryParser.new.parse(@query))
 | 
					    SearchQueryTransformer.new.apply(SearchQueryParser.new.parse(@query))
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user