From 596802329bf47eed9308a745f37a1e81ec0d6ce4 Mon Sep 17 00:00:00 2001 From: Cocoon-Break <54054995+kuishou68@users.noreply.github.com> Date: Tue, 2 Jun 2026 09:28:15 +0800 Subject: [PATCH] fix: sync unread counters after delete/archive operations (Closes #1404) Co-authored-by: kuishou68 <54054995+kuishou68@users.noreply.github.com> Co-authored-by: pojian68 <232320289+pojian68@users.noreply.github.com> Signed-off-by: lingxiu58 <86288566+lingxiu58@users.noreply.github.com> --- main.go | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/main.go b/main.go index 07db2972..f7d98750 100644 --- a/main.go +++ b/main.go @@ -1810,10 +1810,11 @@ func (m *mainModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { //nolint:gocyclo } } m.folderEmails[folderName] = filtered - go saveFolderEmailsToCache(folderName, filtered) - } + go saveFolderEmailsToCache(folderName, filtered) + } - return m, m.deleteFolderEmailCmd(msg.UID, msg.AccountID, folderName, msg.Mailbox) + m.syncUnreadBadge() + return m, m.deleteFolderEmailCmd(msg.UID, msg.AccountID, folderName, msg.Mailbox) case tui.ArchiveEmailMsg: tui.ClearKittyGraphics() @@ -1843,10 +1844,11 @@ func (m *mainModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { //nolint:gocyclo } } m.folderEmails[folderName] = filtered - go saveFolderEmailsToCache(folderName, filtered) - } + go saveFolderEmailsToCache(folderName, filtered) + } - return m, m.archiveFolderEmailCmd(msg.UID, msg.AccountID, folderName, msg.Mailbox) + m.syncUnreadBadge() + return m, m.archiveFolderEmailCmd(msg.UID, msg.AccountID, folderName, msg.Mailbox) case tui.EmailMarkedReadMsg: if msg.Err != nil { @@ -1905,10 +1907,11 @@ func (m *mainModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { //nolint:gocyclo } } m.folderEmails[folderName] = filtered - go saveFolderEmailsToCache(folderName, filtered) - } + go saveFolderEmailsToCache(folderName, filtered) + } - return m, m.batchDeleteEmailsCmd(msg.UIDs, msg.AccountID, folderName, msg.Mailbox, len(msg.UIDs)) + m.syncUnreadBadge() + return m, m.batchDeleteEmailsCmd(msg.UIDs, msg.AccountID, folderName, msg.Mailbox, len(msg.UIDs)) case tui.BatchArchiveEmailsMsg: tui.ClearKittyGraphics() @@ -1939,10 +1942,11 @@ func (m *mainModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { //nolint:gocyclo } } m.folderEmails[folderName] = filtered - go saveFolderEmailsToCache(folderName, filtered) - } + go saveFolderEmailsToCache(folderName, filtered) + } - return m, m.batchArchiveEmailsCmd(msg.UIDs, msg.AccountID, folderName, msg.Mailbox, len(msg.UIDs)) + m.syncUnreadBadge() + return m, m.batchArchiveEmailsCmd(msg.UIDs, msg.AccountID, folderName, msg.Mailbox, len(msg.UIDs)) case tui.BatchMoveEmailsMsg: if m.config == nil {