From cd7aa535216db33d877c8824b5961ff9100bd845 Mon Sep 17 00:00:00 2001
From: moin-Jana <172497896+moin-Jana@users.noreply.github.com>
Date: Tue, 10 Sep 2024 07:55:32 +0200
Subject: [PATCH] FIX: add "in:first" to user summary category search (#28688)
* FIX: add "in:first" to user summary category search
The "in:first" parameter was added to the search parameters for the topic count in the user summary category search.
This ensures that the search results focus specifically on the first posts in each topic, so only topics are returned.
Meta topic: https://meta.discourse.org/t/summary-page-by-category-topic-links/215848
* add tests
Provided by @natsw
---
.../components/user-summary-category-search.js | 6 +++++-
.../discourse/app/templates/user/summary.hbs | 2 ++
.../acceptance/user-profile-summary-test.js | 17 ++++++++++++++++-
3 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/app/assets/javascripts/discourse/app/components/user-summary-category-search.js b/app/assets/javascripts/discourse/app/components/user-summary-category-search.js
index f96e104ad21..781b56dfb69 100644
--- a/app/assets/javascripts/discourse/app/components/user-summary-category-search.js
+++ b/app/assets/javascripts/discourse/app/components/user-summary-category-search.js
@@ -6,6 +6,10 @@ import discourseComputed from "discourse-common/utils/decorators";
export default class UserSummaryCategorySearch extends Component {
@discourseComputed("user", "category")
searchParams() {
- return `@${this.get("user.username")} #${this.get("category.slug")}`;
+ let query = `@${this.get("user.username")} #${this.get("category.slug")}`;
+ if (this.searchOnlyFirstPosts) {
+ query += " in:first";
+ }
+ return query;
}
}
diff --git a/app/assets/javascripts/discourse/app/templates/user/summary.hbs b/app/assets/javascripts/discourse/app/templates/user/summary.hbs
index 6fd464f6dc1..5a00fbd1eeb 100644
--- a/app/assets/javascripts/discourse/app/templates/user/summary.hbs
+++ b/app/assets/javascripts/discourse/app/templates/user/summary.hbs
@@ -291,6 +291,7 @@
@@ -298,6 +299,7 @@
diff --git a/app/assets/javascripts/discourse/tests/acceptance/user-profile-summary-test.js b/app/assets/javascripts/discourse/tests/acceptance/user-profile-summary-test.js
index 35cfc2260ed..c8e84a6844c 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/user-profile-summary-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/user-profile-summary-test.js
@@ -1,4 +1,4 @@
-import { click, visit } from "@ember/test-helpers";
+import { click, currentURL, visit } from "@ember/test-helpers";
import { test } from "qunit";
import userFixtures from "discourse/tests/fixtures/user-fixtures";
import {
@@ -29,6 +29,21 @@ acceptance("User Profile - Summary", function (needs) {
"top categories"
);
});
+
+ test("Top Categories Search", async function (assert) {
+ await visit("/u/eviltrout/summary");
+
+ await click(".top-categories-section .reply-count a");
+ assert.strictEqual(currentURL(), "/search?q=%40eviltrout%20%23bug");
+
+ await visit("/u/eviltrout/summary");
+
+ await click(".top-categories-section .topic-count a");
+ assert.strictEqual(
+ currentURL(),
+ "/search?q=%40eviltrout%20%23bug%20in%3Afirst"
+ );
+ });
});
acceptance("User Profile - Summary - User Status", function (needs) {