From a834960d08387ef82b76655997366022bdfc837b Mon Sep 17 00:00:00 2001
From: Linus Rath <139418639+rathlinus@users.noreply.github.com>
Date: Wed, 4 Nov 2026 11:10:27 +0100
Subject: [PATCH] fix: count conversations above grouped search results while
more can load
The test for "10+ results" now runs with conversations off, the only
case that still says results.
---
components/email/__tests__/search-result-count.test.tsx | 8 +++++++-
components/email/search-result-count.tsx | 3 +++
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/components/email/__tests__/search-result-count.test.tsx b/components/email/__tests__/search-result-count.test.tsx
index 79e2feb57..477e01c52 100644
--- a/components/email/__tests__/search-result-count.test.tsx
+++ b/components/email/__tests__/search-result-count.test.tsx
@@ -47,7 +47,13 @@ describe('SearchResultCount', () => {
expect(container.textContent).toBe('advanced_search.results_found {"count":10}');
});
- it('keeps "10+ results" while more can load', () => {
+ it('counts conversations while more can load and the list groups them', () => {
+ const { container } = render();
+ expect(container.textContent).toBe('email_list.conversations_count_plus {"count":3}');
+ });
+
+ it('keeps "10+ results" while more can load and conversations are off', () => {
+ useSettingsStore.setState({ disableThreading: true });
const { container } = render();
expect(container.textContent).toBe('advanced_search.results_found_more {"count":10}');
});
diff --git a/components/email/search-result-count.tsx b/components/email/search-result-count.tsx
index cd83d38ef..5ccb21e7c 100644
--- a/components/email/search-result-count.tsx
+++ b/components/email/search-result-count.tsx
@@ -18,6 +18,9 @@ export function SearchResultCount({ emails, hasMore }: { emails: Email[]; hasMor
() => (disableThreading ? emails.length : groupEmailsByThread(emails).length),
[emails, disableThreading],
);
+ // More to load: the rows are conversations when the list groups them, so
+ // "100+ results" above them reads wrong as well (mail-16).
+ if (hasMore && !disableThreading) return <>{t("email_list.conversations_count_plus", { count: conversations })}>;
if (hasMore) return <>{t("advanced_search.results_found_more", { count: emails.length })}>;
if (conversations === emails.length) return <>{t("advanced_search.results_found", { count: emails.length })}>;
return <>{t("mail_list_extra.search_count", { conversations, messages: emails.length })}>;