From cd4b4d47346b4d874315fc2560f4cb1e0b1cb2a0 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 8 Jan 2024 10:31:13 -0500 Subject: [PATCH] Replace unused `by_recent_sign_in` scope (#28616) --- app/models/account.rb | 10 +++++++++- app/models/account_filter.rb | 10 +--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/models/account.rb b/app/models/account.rb index 886b29b873..003b41b015 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -131,7 +131,7 @@ class Account < ApplicationRecord scope :discoverable, -> { searchable.without_silenced.where(discoverable: true).joins(:account_stat) } scope :followable_by, ->(account) { joins(arel_table.join(Follow.arel_table, Arel::Nodes::OuterJoin).on(arel_table[:id].eq(Follow.arel_table[:target_account_id]).and(Follow.arel_table[:account_id].eq(account.id))).join_sources).where(Follow.arel_table[:id].eq(nil)).joins(arel_table.join(FollowRequest.arel_table, Arel::Nodes::OuterJoin).on(arel_table[:id].eq(FollowRequest.arel_table[:target_account_id]).and(FollowRequest.arel_table[:account_id].eq(account.id))).join_sources).where(FollowRequest.arel_table[:id].eq(nil)) } scope :by_recent_status, -> { includes(:account_stat).merge(AccountStat.order('last_status_at DESC NULLS LAST')).references(:account_stat) } - scope :by_recent_sign_in, -> { order(Arel.sql('users.current_sign_in_at DESC NULLS LAST')) } + scope :by_recent_activity, -> { left_joins(:user, :account_stat).order(coalesced_activity_timestamps.desc).order(id: :desc) } scope :popular, -> { order('account_stats.followers_count desc') } scope :by_domain_and_subdomains, ->(domain) { where(domain: Instance.by_domain_and_subdomains(domain).select(:domain)) } scope :not_excluded_by_account, ->(account) { where.not(id: account.excluded_from_timeline_account_ids) } @@ -444,6 +444,14 @@ class Account < ApplicationRecord DeliveryFailureTracker.without_unavailable(urls) end + def coalesced_activity_timestamps + Arel.sql( + <<~SQL.squish + COALESCE(users.current_sign_in_at, account_stats.last_status_at, to_timestamp(0)) + SQL + ) + end + def from_text(text) return [] if text.blank? diff --git a/app/models/account_filter.rb b/app/models/account_filter.rb index 55d34e85c3..42b1c49538 100644 --- a/app/models/account_filter.rb +++ b/app/models/account_filter.rb @@ -104,15 +104,7 @@ class AccountFilter def order_scope(value) case value.to_s when 'active' - accounts_with_users - .left_joins(:account_stat) - .order( - Arel.sql( - <<~SQL.squish - COALESCE(users.current_sign_in_at, account_stats.last_status_at, to_timestamp(0)) DESC, accounts.id DESC - SQL - ) - ) + Account.by_recent_activity when 'recent' Account.recent else