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 })}>;