Stop an unnamed IMAP flag from being overwritten

FixEmailService
Ya
11 Agosti 2026, 18:00 UTC
Mwandishi
Kamo
Ahadi ya
1b3553f

IMAP flags are independent, so "mark this read" must say nothing about the star. EmailImapService.setFlags has always taken nullable Booleans and skipped the nulls, but FolderManager exposed three primitives and every caller above it flattened absent to false — turning each of these into a full three-flag overwrite: - opening an unread message sends {"seen": true}, which cleared its star and its answered flag (both the personal and the shared-mailbox endpoint) - marking a conversation read passed (true, false, false), doing the same to every message in the thread - starring a conversation passed (false, starred, false), marking its newest message unread again FolderManager.setFlags now takes Boolean and the three call sites pass what the caller actually named. Graph gets the same contract for free by leaving unnamed properties out of the PATCH body, and skips the call when nothing is left to send. The batch endpoint already did this correctly and is unchanged; the frontend already sent partial flag objects, so it needs no change either. Tests: opening a message leaves the star alone, an explicit false still clears, and neither conversation action touches the flag it was not asked about.

Mabadiliko yote

Je, unaona nini kuhusu usafiri?

Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.

Kuwa Huru MileleMtazamo wa bei