Compare commits

...

2 Commits

Author SHA1 Message Date
Matt Jankowski
7173ad9c9f
Merge 932ec58172 into c442589593 2025-07-10 08:06:41 +00:00
Matt Jankowski
932ec58172 Extract common lists for status/reblog preload/cacheable 2025-07-07 11:53:29 -04:00
2 changed files with 23 additions and 24 deletions

View File

@ -62,7 +62,11 @@ module Admin
end
def set_statuses
@statuses = Admin::StatusFilter.new(@account, filter_params).results.preload(:application, :preloadable_poll, :media_attachments, active_mentions: :account, reblog: [:account, :application, :preloadable_poll, :media_attachments, active_mentions: :account]).page(params[:page]).per(PER_PAGE)
@statuses = Admin::StatusFilter.new(@account, {}).results.preload(*preload_columns, reblog: [:account, *preload_columns]).page(params[:page]).per(PER_PAGE)
end
def preload_columns
[:application, :preloadable_poll, :media_attachments, active_mentions: :account]
end
def filter_params

View File

@ -44,6 +44,19 @@ class Status < ApplicationRecord
include Status::ThreadingConcern
include Status::Visibility
CACHEABLE_ASSOCIATIONS = [
:application,
:conversation,
:media_attachments,
:preloadable_poll,
:status_stat,
:tags,
account: [:account_stat, user: :role],
active_mentions: :account,
preview_cards_status: { preview_card: { author_account: [:account_stat, user: :role] } },
quote: { status: { account: [:account_stat, user: :role] } },
].freeze
MEDIA_ATTACHMENTS_LIMIT = 4
QUOTE_APPROVAL_POLICY_FLAGS = {
@ -162,29 +175,11 @@ class Status < ApplicationRecord
# the `dependent: destroy` callbacks remove relevant records
before_destroy :unlink_from_conversations!, prepend: true
cache_associated :application,
:media_attachments,
:conversation,
:status_stat,
:tags,
:preloadable_poll,
quote: { status: { account: [:account_stat, user: :role] } },
preview_cards_status: { preview_card: { author_account: [:account_stat, user: :role] } },
account: [:account_stat, user: :role],
active_mentions: :account,
reblog: [
:application,
:media_attachments,
:conversation,
:status_stat,
:tags,
:preloadable_poll,
quote: { status: { account: [:account_stat, user: :role] } },
preview_cards_status: { preview_card: { author_account: [:account_stat, user: :role] } },
account: [:account_stat, user: :role],
active_mentions: :account,
],
cache_associated(
*CACHEABLE_ASSOCIATIONS,
reblog: [*CACHEABLE_ASSOCIATIONS],
thread: :account
)
delegate :domain, :indexable?, to: :account, prefix: true