diff options
| -rw-r--r-- | worker/imap/flags.go | 19 | 
1 files changed, 17 insertions, 2 deletions
diff --git a/worker/imap/flags.go b/worker/imap/flags.go index 57211a6..17c9393 100644 --- a/worker/imap/flags.go +++ b/worker/imap/flags.go @@ -1,6 +1,7 @@  package imap  import ( +	"fmt"  	"github.com/emersion/go-imap"  	"git.sr.ht/~sircmpwn/aerc/worker/types" @@ -51,12 +52,26 @@ func (imapw *IMAPWorker) handleReadMessages(msg *types.ReadMessages) {  		flags = []interface{}{imap.SeenFlag}  	}  	uids := toSeqSet(msg.Uids) -	if err := imapw.client.UidStore(uids, item, flags, nil); err != nil { +	emitErr := func(err error) {  		imapw.worker.PostMessage(&types.Error{  			Message: types.RespondTo(msg),  			Error:   err,  		}, nil) +	} +	if err := imapw.client.UidStore(uids, item, flags, nil); err != nil { +		emitErr(err)  		return  	} -	imapw.worker.PostMessage(&types.Done{types.RespondTo(msg)}, nil) +	imapw.worker.PostAction(&types.FetchMessageHeaders{ +		Uids: msg.Uids, +	}, func(_msg types.WorkerMessage) { +		switch m := _msg.(type) { +		case *types.Error: +			err := fmt.Errorf("handleReadMessages: %v", m.Error) +			imapw.worker.Logger.Printf("could not fetch headers: %s", err) +			emitErr(err) +		case *types.Done: +			imapw.worker.PostMessage(&types.Done{types.RespondTo(msg)}, nil) +		} +	})  }  | 
