statuses = statuses_with_accounts(ids).to_a
account_ids = statuses.map(&:account_id).uniq
domains = statuses.map(&:account_domain).compact.uniq
-
- relations = if account.present?
- {
- 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
+ relations = relations_map_for_account(account, account_ids, domains)
statuses.reject! { |status| filter_from_context?(status, account, relations) }
statuses.sort_by! { |status| ids.index(status.id) }
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
+
def statuses_with_accounts(ids)
Status.where(id: ids).includes(:account)
end