From 2787065d36cb5dab5b840d03e4dcf960bd9b36c3 Mon Sep 17 00:00:00 2001
From: Pascal Bleser
Date: Tue, 14 Oct 2025 11:36:13 +0200
Subject: [PATCH] groupware: jmap: don't collpase threads when searching for
emails, and add dumping of JMAP request payloads when trace logging is
enabled
---
pkg/jmap/jmap_api_email.go | 2 +-
pkg/jmap/jmap_http.go | 8 ++++++++
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/pkg/jmap/jmap_api_email.go b/pkg/jmap/jmap_api_email.go
index ee255bc419..6b85beb4c4 100644
--- a/pkg/jmap/jmap_api_email.go
+++ b/pkg/jmap/jmap_api_email.go
@@ -346,7 +346,7 @@ func (j *Client) QueryEmailsWithSnippets(accountId string, filter EmailFilterEle
AccountId: accountId,
Filter: filter,
Sort: []EmailComparator{{Property: emailSortByReceivedAt, IsAscending: false}},
- CollapseThreads: true,
+ CollapseThreads: false,
CalculateTotal: true,
}
if offset > 0 {
diff --git a/pkg/jmap/jmap_http.go b/pkg/jmap/jmap_http.go
index 7f75e578dd..5e9ad47bfe 100644
--- a/pkg/jmap/jmap_http.go
+++ b/pkg/jmap/jmap_http.go
@@ -9,6 +9,7 @@ import (
"fmt"
"io"
"net/http"
+ "net/http/httputil"
"net/url"
"slices"
"strconv"
@@ -201,6 +202,13 @@ func (h *HttpJmapClient) Command(ctx context.Context, logger *log.Logger, sessio
req.Header.Add("Content-Type", "application/json")
req.Header.Add("User-Agent", h.userAgent)
+
+ if logger.Trace().Enabled() {
+ requestBytes, err := httputil.DumpRequestOut(req, true)
+ if err == nil {
+ logger.Trace().Str(logEndpoint, endpoint).Msg(string(requestBytes))
+ }
+ }
h.auth(session.Username, logger, req)
res, err := h.client.Do(req)