|
|
|
|
@ -7,14 +7,24 @@ class StatusRelationshipsPresenter
|
|
|
|
|
:bookmarks_map, :filters_map, :attributes_map
|
|
|
|
|
|
|
|
|
|
def initialize(statuses, current_account_id = nil, **options)
|
|
|
|
|
@current_account_id = current_account_id
|
|
|
|
|
|
|
|
|
|
# Keeping a reference to @statuses is ok since `StatusRelationshipsPresenter`
|
|
|
|
|
# basically never outlives the statuses collection it is passed
|
|
|
|
|
@statuses = statuses
|
|
|
|
|
|
|
|
|
|
if current_account_id.nil?
|
|
|
|
|
@reblogs_map = {}
|
|
|
|
|
@favourites_map = {}
|
|
|
|
|
@bookmarks_map = {}
|
|
|
|
|
@mutes_map = {}
|
|
|
|
|
@pins_map = {}
|
|
|
|
|
@filters_map = {}
|
|
|
|
|
@preloaded_account_relations = {}
|
|
|
|
|
@filters_map = {}
|
|
|
|
|
@reblogs_map = {}
|
|
|
|
|
@favourites_map = {}
|
|
|
|
|
@bookmarks_map = {}
|
|
|
|
|
@mutes_map = {}
|
|
|
|
|
@pins_map = {}
|
|
|
|
|
@attributes_map = {}
|
|
|
|
|
else
|
|
|
|
|
@preloaded_account_relations = nil
|
|
|
|
|
|
|
|
|
|
statuses = statuses.compact
|
|
|
|
|
status_ids = statuses.flat_map { |s| [s.id, s.reblog_of_id, s.proper.quote&.quoted_status_id] }.uniq.compact
|
|
|
|
|
conversation_ids = statuses.flat_map { |s| [s.proper.conversation_id, s.proper.quote&.quoted_status&.conversation_id] }.uniq.compact
|
|
|
|
|
@ -30,6 +40,17 @@ class StatusRelationshipsPresenter
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# This one is currently on-demand as it is only used for quote posts
|
|
|
|
|
def preloaded_account_relations
|
|
|
|
|
@preloaded_account_relations ||= begin
|
|
|
|
|
accounts = @statuses.compact.flat_map { |s| [s.account, s.proper.account, s.proper.quote&.quoted_account] }.uniq.compact
|
|
|
|
|
|
|
|
|
|
account_ids = accounts.pluck(:id)
|
|
|
|
|
account_domains = accounts.pluck(:domain).uniq
|
|
|
|
|
Account.find(@current_account_id).relations_map(account_ids, account_domains)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
|
|
def build_filters_map(statuses, current_account_id)
|
|
|
|
|
|