Merge remote-tracking branch 'parent/main' into upstream-20240507

This commit is contained in:
KMY 2024-05-07 08:05:04 +09:00
commit 89b71363ae
70 changed files with 1739 additions and 445 deletions

View file

@ -3,6 +3,23 @@
module Status::ThreadingConcern
extend ActiveSupport::Concern
class_methods do
def permitted_statuses_from_ids(ids, account, stable: false)
statuses = Status.with_accounts(ids).to_a
account_ids = statuses.map(&:account_id).uniq
domains = statuses.filter_map(&:account_domain).uniq
relations = account&.relations_map(account_ids, domains) || {}
statuses.reject! { |status| StatusFilter.new(status, account, relations).filtered? }
if stable
statuses.sort_by! { |status| ids.index(status.id) }
else
statuses
end
end
end
def ancestors(limit, account = nil)
find_statuses_from_tree_path(ancestor_ids(limit), account)
end
@ -85,15 +102,7 @@ module Status::ThreadingConcern
end
def find_statuses_from_tree_path(ids, account, promote: false)
statuses = Status.with_accounts(ids).to_a
account_ids = statuses.map(&:account_id).uniq
domains = statuses.filter_map(&:account_domain).uniq
relations = account&.relations_map(account_ids, domains) || {}
statuses.reject! { |status| StatusFilter.new(status, account, relations).filtered? }
# Order ancestors/descendants by tree path
statuses.sort_by! { |status| ids.index(status.id) }
statuses = Status.permitted_statuses_from_ids(ids, account, stable: true)
# Bring self-replies to the top
if promote