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