From 99b74dbcc98990a3732281f07a2238266f0916dc Mon Sep 17 00:00:00 2001 From: Koni Marti Date: Tue, 5 Jul 2022 21:42:42 +0200 Subject: [PATCH] postpone: avoid calling WriteMessage twice Postpone will currently call composer.WriteMessage twice: once for counting the bytes and another time for appending the message. Signed-off-by: Koni Marti Acked-by: Robin Jarry --- commands/compose/postpone.go | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/commands/compose/postpone.go b/commands/compose/postpone.go index a4ac5c6..f826f68 100644 --- a/commands/compose/postpone.go +++ b/commands/compose/postpone.go @@ -1,8 +1,7 @@ package compose import ( - "io" - "io/ioutil" + "bytes" "time" "github.com/miolini/datacounter" @@ -82,33 +81,29 @@ func (Postpone) Execute(aerc *widgets.Aerc, args []string) error { } aerc.RemoveTab(composer) - ctr := datacounter.NewWriterCounter(ioutil.Discard) + var buf bytes.Buffer + ctr := datacounter.NewWriterCounter(&buf) err = composer.WriteMessage(header, ctr) if err != nil { handleErr(errors.Wrap(err, "WriteMessage")) return } nbytes := int(ctr.Count()) - r, w := io.Pipe() worker.PostAction(&types.AppendMessage{ Destination: config.Postpone, Flags: []models.Flag{models.SeenFlag}, Date: time.Now(), - Reader: r, + Reader: &buf, Length: int(nbytes), }, func(msg types.WorkerMessage) { switch msg := msg.(type) { case *types.Done: aerc.PushStatus("Message postponed.", 10*time.Second) - r.Close() composer.Close() case *types.Error: - r.Close() handleErr(msg.Error) } }) - composer.WriteMessage(header, w) - w.Close() }() if !alreadyCreated {