~sircmpwn/aerc

This thread contains a patchset. You're looking at the original emails, but you may wish to use the patch review UI. Review patch
2 2

[PATCH] imap: emit messageinfo when changing read state.

Details
Message ID
<20200123071752.37325-1-reto@labrat.space>
DKIM signature
missing
Download raw message
Patch: +17 -2
We need to emit the changed msgInfo whenever we modify the state
---
Easiest way to do that is to simply emit the fetchHeaders action.
Any objections in doing that?

 worker/imap/flags.go | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/worker/imap/flags.go b/worker/imap/flags.go
index 57211a6..011cf54 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)
		}
	})
}
-- 
2.25.0
Details
Message ID
<C03BV521HVW0.2MOU2EM9BE6YK@jupiter.local>
In-Reply-To
<20200123071752.37325-1-reto@labrat.space> (view parent)
DKIM signature
missing
Download raw message
On Thu Jan 23, 2020 at 08:17, Reto Brunner wrote:
> -	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)

Note that the msg parameter from the callback is shadowing here, so the
original message won't get a Done.
Details
Message ID
<496ADA88-3D66-4F91-9577-82E7514BEF7A@labrat.space>
In-Reply-To
<C03BV521HVW0.2MOU2EM9BE6YK@jupiter.local> (view parent)
DKIM signature
missing
Download raw message
... I need more coffee apparently.

Thanks a lot for catching that Ben, v2 incoming
Reply to thread Export thread (mbox)