FIX: Respect default category sort when `filter=default` (#23411)

Previously we would respect it if the filter was `nil`, but if `default` was explicitly passed then it would ignore the category order settings. This explicit passing of `filter=default` happens for some types of navigations in the JS app.

This extends the fix from 92bc61b4be
This commit is contained in:
David Taylor 2023-09-05 19:05:30 +01:00 committed by GitHub
parent 2ed223fced
commit 534f62cf5b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 1 deletions

View File

@ -749,7 +749,7 @@ class TopicQuery
# category default sort order
sort_order, sort_ascending =
Category.where(id: category_id).pick(:sort_order, :sort_ascending)
if sort_order && (filter.blank? || %w[latest unseen].include?(filter.to_s))
if sort_order && (filter.blank? || %w[default latest unseen].include?(filter.to_s))
options[:order] = sort_order
options[:ascending] = !!sort_ascending ? "true" : "false"
else

View File

@ -1005,6 +1005,17 @@ RSpec.describe TopicQuery do
expect(topic_ids - [topic_category.id]).to eq([topic_in_cat1.id, topic_in_cat2.id])
end
it "uses the category's default sort order when filter=default is passed explicitly" do
category.update!(sort_order: "created", sort_ascending: true)
topic_ids =
TopicQuery
.new(user, category: category.id, filter: "default")
.list_latest
.topics
.map(&:id)
expect(topic_ids - [topic_category.id]).to eq([topic_in_cat1.id, topic_in_cat2.id])
end
it "should apply default sort order to latest and unseen filters only" do
category.update!(sort_order: "created", sort_ascending: true)