From 4a90cf4fa07d85046c868a567c4a7e64591d4040 Mon Sep 17 00:00:00 2001 From: Linus Rath Date: Sat, 14 Mar 2026 15:43:29 +0100 Subject: [PATCH] feat: enhance email search functionality to support OR conditions across multiple fields --- lib/jmap/client.ts | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/jmap/client.ts b/lib/jmap/client.ts index 92a082dc..ecf55261 100644 --- a/lib/jmap/client.ts +++ b/lib/jmap/client.ts @@ -870,9 +870,30 @@ export class JMAPClient { async searchEmails(query: string, mailboxId?: string, accountId?: string, limit: number = 50, position: number = 0): Promise<{ emails: Email[], hasMore: boolean, total: number }> { try { const targetAccountId = accountId || this.accountId; - const filter: Record = { text: query }; + + // Standard search: OR across all fields (from, to, subject, body) + // so the search bar finds matches in name, email address, subject, and body + const orFilter: Record = { + operator: "OR", + conditions: [ + { from: query }, + { to: query }, + { subject: query }, + { body: query }, + ], + }; + + let filter: Record; if (mailboxId) { - filter.inMailbox = mailboxId; + filter = { + operator: "AND", + conditions: [ + { inMailbox: mailboxId }, + orFilter, + ], + }; + } else { + filter = orFilter; } const response = await this.request([