From 588776f42574567f907c190a5ff089256b21e598 Mon Sep 17 00:00:00 2001 From: Robin Jarry Date: Fri, 17 May 2024 16:03:04 +0200 Subject: imap: report errors from server Avoid eternal spinner on the message list when the imap server advertises some message UIDs but fails to provide their headers when aerc asks from them. When an error occurs, or if some UIDs are not returned, make sure to report the errors to the message list UI. Signed-off-by: Robin Jarry Reviewed-by: Tristan Partin --- lib/msgstore.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/msgstore.go b/lib/msgstore.go index 45b9cfd7..d5501a4c 100644 --- a/lib/msgstore.go +++ b/lib/msgstore.go @@ -241,6 +241,7 @@ func merge(to *models.MessageInfo, from *models.MessageInfo) { } to.Flags = from.Flags to.Labels = from.Labels + to.Error = from.Error if from.Size != 0 { to.Size = from.Size } @@ -304,9 +305,10 @@ func (store *MessageStore) Update(msg types.WorkerMessage) { store.Messages = newMap update = true case *types.MessageInfo: + infoUpdated := msg.Info.Envelope != nil || msg.Info.Error != nil if existing, ok := store.Messages[msg.Info.Uid]; ok && existing != nil { merge(existing, msg.Info) - } else if msg.Info.Envelope != nil { + } else if infoUpdated { store.Messages[msg.Info.Uid] = msg.Info if store.selectedUid == msg.Info.Uid { store.onSelect(msg.Info) @@ -323,7 +325,7 @@ func (store *MessageStore) Update(msg types.WorkerMessage) { if !seen && recent && msg.Info.Envelope != nil { store.triggerNewEmail(msg.Info) } - if _, ok := store.pendingHeaders[msg.Info.Uid]; msg.Info.Envelope != nil && ok { + if _, ok := store.pendingHeaders[msg.Info.Uid]; infoUpdated && ok { delete(store.pendingHeaders, msg.Info.Uid) } if store.builder != nil { -- cgit