mirror of https://github.com/tootsuite/mastodon
Refactoring relations_map (#24195)
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…
Reference in New Issue