From 2358e61733d99bac0689cbe91713de5c41e003ab Mon Sep 17 00:00:00 2001
From: Pascal Bleser
Date: Tue, 21 Oct 2025 16:12:56 +0200
Subject: [PATCH] groupware: fix keyword patching syntax for adding and
removing email keywords endpoints
---
.../pkg/groupware/groupware_api_emails.go | 28 +++++++------------
1 file changed, 10 insertions(+), 18 deletions(-)
diff --git a/services/groupware/pkg/groupware/groupware_api_emails.go b/services/groupware/pkg/groupware/groupware_api_emails.go
index 7082fc72b9..855a99253f 100644
--- a/services/groupware/pkg/groupware/groupware_api_emails.go
+++ b/services/groupware/pkg/groupware/groupware_api_emails.go
@@ -1012,19 +1012,15 @@ func (g *Groupware) UpdateEmailKeywords(w http.ResponseWriter, r *http.Request)
return noContentResponse(req.session.State)
}
- // TODO FIXME use "keywords/$seen" instead, see https://datatracker.ietf.org/doc/html/rfc8620#section-5.7
- patch := map[string]*bool{}
- truth := true
+ patch := jmap.EmailUpdate{}
for _, keyword := range body.Add {
- patch[keyword] = &truth
+ patch["keywords/"+keyword] = true
}
for _, keyword := range body.Remove {
- patch[keyword] = nil
+ patch["keywords/"+keyword] = nil
}
patches := map[string]jmap.EmailUpdate{
- emailId: {
- "keywords": patch,
- },
+ emailId: patch,
}
result, sessionState, lang, jerr := g.jmap.UpdateEmails(accountId, patches, req.session, req.ctx, logger, req.language())
@@ -1080,14 +1076,12 @@ func (g *Groupware) AddEmailKeywords(w http.ResponseWriter, r *http.Request) {
return noContentResponse(req.session.State)
}
- patch := map[string]bool{}
+ patch := jmap.EmailUpdate{}
for _, keyword := range body {
- patch[keyword] = true
+ patch["keywords/"+keyword] = true
}
patches := map[string]jmap.EmailUpdate{
- emailId: {
- "keywords": patch,
- },
+ emailId: patch,
}
result, sessionState, lang, jerr := g.jmap.UpdateEmails(accountId, patches, req.session, req.ctx, logger, req.language())
@@ -1147,14 +1141,12 @@ func (g *Groupware) RemoveEmailKeywords(w http.ResponseWriter, r *http.Request)
return noContentResponse(req.session.State)
}
- patch := map[string]*bool{}
+ patch := jmap.EmailUpdate{}
for _, keyword := range body {
- patch[keyword] = nil
+ patch["keywords/"+keyword] = nil
}
patches := map[string]jmap.EmailUpdate{
- emailId: {
- "keywords": patch,
- },
+ emailId: patch,
}
result, sessionState, lang, jerr := g.jmap.UpdateEmails(accountId, patches, req.session, req.ctx, logger, req.language())