diff options
author | Claire <claire.github-309c@sitedethib.com> | 2023-03-02 17:32:38 +0100 |
---|---|---|
committer | Claire <claire.github-309c@sitedethib.com> | 2023-03-02 17:32:38 +0100 |
commit | 276c1d32d6fc857a768244c3f5d835c9c5da1747 (patch) | |
tree | 4619ffd871db93c3932cfb79f9852368096dc5b5 /app/models | |
parent | 6a4be4e96677eb3e1303ddcab8f8b4bea7298453 (diff) | |
parent | af578e8ce0aabdbe9c0cd3d72d6fa2cc30b7fc66 (diff) |
Merge branch 'main' into glitch-soc/merge-upstream
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/account_filter.rb | 24 | ||||
-rw-r--r-- | app/models/poll_vote.rb | 1 |
2 files changed, 22 insertions, 3 deletions
diff --git a/app/models/account_filter.rb b/app/models/account_filter.rb index d27bb46fc..1666ea883 100644 --- a/app/models/account_filter.rb +++ b/app/models/account_filter.rb @@ -17,13 +17,13 @@ class AccountFilter attr_reader :params def initialize(params) - @params = params + @params = params.to_h.symbolize_keys end def results scope = Account.includes(:account_stat, user: [:ips, :invite_request]).without_instance_actor.reorder(nil) - params.each do |key, value| + relevant_params.each do |key, value| next if key.to_s == 'page' scope.merge!(scope_for(key, value)) if value.present? @@ -34,6 +34,16 @@ class AccountFilter private + def relevant_params + params.tap do |args| + args.delete(:origin) if origin_is_remote_and_domain_present? + end + end + + def origin_is_remote_and_domain_present? + params[:origin] == 'remote' && params[:by_domain].present? + end + def scope_for(key, value) case key.to_s when 'origin' @@ -94,7 +104,15 @@ class AccountFilter def order_scope(value) case value.to_s when 'active' - accounts_with_users.left_joins(:account_stat).order(Arel.sql('coalesce(users.current_sign_in_at, account_stats.last_status_at, to_timestamp(0)) desc, accounts.id desc')) + 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 + ) + ) when 'recent' Account.recent else diff --git a/app/models/poll_vote.rb b/app/models/poll_vote.rb index 00eaedd12..92d74a6db 100644 --- a/app/models/poll_vote.rb +++ b/app/models/poll_vote.rb @@ -23,6 +23,7 @@ class PollVote < ApplicationRecord after_create_commit :increment_counter_cache delegate :local?, to: :account + delegate :multiple?, :expired?, to: :poll, prefix: true def object_type :vote |