0
0
Fork 0

Fix issue with trending order when user has chosen languages (#33557)

This commit is contained in:
Matt Jankowski 2025-01-13 09:27:30 -05:00 committed by GitHub
parent 0db7558822
commit f9451c5614
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 58 additions and 13 deletions

View file

@ -16,7 +16,7 @@ class Trends::Links < Trends::Base
class Query < Trends::Query
def to_arel
scope = PreviewCard.joins(:trend).reorder(score: :desc)
scope = scope.merge(language_order_clause) if preferred_languages.present?
scope = scope.reorder(language_order_clause, score: :desc) if preferred_languages.present?
scope = scope.merge(PreviewCardTrend.allowed) if @allowed
scope = scope.offset(@offset) if @offset.present?
scope = scope.limit(@limit) if @limit.present?
@ -25,8 +25,8 @@ class Trends::Links < Trends::Base
private
def language_order_clause
language_order_for(PreviewCardTrend)
def trend_class
PreviewCardTrend
end
end

View file

@ -94,11 +94,14 @@ class Trends::Query
to_arel.to_a
end
def language_order_for(trend_class)
def language_order_clause
Arel::Nodes::Case.new.when(language_is_preferred).then(1).else(0).desc
end
def language_is_preferred
trend_class
.reorder(nil)
.in_order_of(:language, [preferred_languages], filter: false)
.order(score: :desc)
.arel_table[:language]
.in(preferred_languages)
end
def preferred_languages

View file

@ -15,7 +15,7 @@ class Trends::Statuses < Trends::Base
class Query < Trends::Query
def to_arel
scope = Status.joins(:trend).reorder(score: :desc)
scope = scope.merge(language_order_clause) if preferred_languages.present?
scope = scope.reorder(language_order_clause, score: :desc) if preferred_languages.present?
scope = scope.merge(StatusTrend.allowed) if @allowed
scope = scope.not_excluded_by_account(@account).not_domain_blocked_by_account(@account) if @account.present?
scope = scope.offset(@offset) if @offset.present?
@ -25,8 +25,8 @@ class Trends::Statuses < Trends::Base
private
def language_order_clause
language_order_for(StatusTrend)
def trend_class
StatusTrend
end
end

View file

@ -16,7 +16,7 @@ class Trends::Tags < Trends::Base
class Query < Trends::Query
def to_arel
scope = Tag.joins(:trend).reorder(score: :desc)
scope = scope.merge(language_order_clause) if preferred_languages.present?
scope = scope.reorder(language_order_clause, score: :desc) if preferred_languages.present?
scope = scope.merge(TagTrend.allowed) if @allowed
scope = scope.offset(@offset) if @offset.present?
scope = scope.limit(@limit) if @limit.present?
@ -25,8 +25,8 @@ class Trends::Tags < Trends::Base
private
def language_order_clause
language_order_for(TagTrend)
def trend_class
TagTrend
end
end