From 133085b436f56bdd48fb1aba1184811b3a278d3c Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Mon, 8 Jul 2019 18:32:31 -0400 Subject: Fix re-opening of expired pipe tabs --- commands/exec.go | 6 +++++- commands/msg/pipe.go | 8 ++++++-- lib/msgstore.go | 14 +++++++++++++- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/commands/exec.go b/commands/exec.go index a46b93a..27edf5d 100644 --- a/commands/exec.go +++ b/commands/exec.go @@ -36,10 +36,14 @@ func (_ ExecCmd) Execute(aerc *widgets.Aerc, args []string) error { aerc.PushStatus(" "+err.Error(), 10*time.Second). Color(tcell.ColorDefault, tcell.ColorRed) } else { + color := tcell.ColorDefault + if cmd.ProcessState.ExitCode() != 0 { + color = tcell.ColorRed + } aerc.PushStatus(fmt.Sprintf( "%s: completed with status %d", args[0], cmd.ProcessState.ExitCode()), 10*time.Second). - Color(tcell.ColorDefault, tcell.ColorDefault) + Color(tcell.ColorDefault, color) } }() return nil diff --git a/commands/msg/pipe.go b/commands/msg/pipe.go index 158f9ea..6f8c616 100644 --- a/commands/msg/pipe.go +++ b/commands/msg/pipe.go @@ -91,10 +91,14 @@ func (_ Pipe) Execute(aerc *widgets.Aerc, args []string) error { aerc.PushStatus(" "+err.Error(), 10*time.Second). Color(tcell.ColorDefault, tcell.ColorRed) } else { + color := tcell.ColorDefault + if ecmd.ProcessState.ExitCode() != 0 { + color = tcell.ColorRed + } aerc.PushStatus(fmt.Sprintf( - "%s: completed with status %d", args[0], + "%s: completed with status %d", cmd[0], ecmd.ProcessState.ExitCode()), 10*time.Second). - Color(tcell.ColorDefault, tcell.ColorDefault) + Color(tcell.ColorDefault, color) } } diff --git a/lib/msgstore.go b/lib/msgstore.go index 595908d..038c3ca 100644 --- a/lib/msgstore.go +++ b/lib/msgstore.go @@ -92,7 +92,18 @@ func (store *MessageStore) FetchFull(uids []uint32, cb func(io.Reader)) { } } if len(toFetch) > 0 { - store.worker.PostAction(&types.FetchFullMessages{Uids: toFetch}, nil) + store.worker.PostAction(&types.FetchFullMessages{ + Uids: toFetch, + }, func(msg types.WorkerMessage) { + switch msg.(type) { + case *types.Error: + for _, uid := range toFetch { + if _, ok := store.bodyCallbacks[uid]; ok { + delete(store.bodyCallbacks, uid) + } + } + } + }) } } @@ -169,6 +180,7 @@ func (store *MessageStore) Update(msg types.WorkerMessage) { for _, cb := range cbs { cb(msg.Content.Reader) } + delete(store.bodyCallbacks, msg.Content.Uid) } } case *types.MessagesDeleted: -- cgit v1.2.3