Fix JMAP: Email/query total miscount when collapseThreads is enabled

This commit is contained in:
Maurus Decimus
2026-06-18 15:53:24 +02:00
parent 42d0dcf88c
commit 5bb4ff5995
2 changed files with 18 additions and 2 deletions

View File

@@ -349,15 +349,30 @@ impl EmailQuery for Server {
)
.await?;
let collapse_threads = request.arguments.collapse_threads.unwrap_or(false);
let total_results = if collapse_threads {
let mut seen_thread_ids = AHashSet::new();
results
.iter()
.filter_map(|document_id| {
cached_messages
.email_by_id(document_id)
.map(|email| email.thread_id)
})
.filter(|thread_id| seen_thread_ids.insert(*thread_id))
.count()
} else {
results.len()
};
let mut response = QueryResponseBuilder::new(
results.len(),
total_results,
self.core.jmap.query_max_results,
cached_messages.get_state(false),
&request,
);
if !results.is_empty() {
let collapse_threads = request.arguments.collapse_threads.unwrap_or(false);
let mut seen_thread_ids = AHashSet::new();
for document_id in results {