send: enter no-quit mode until message is sent
Protect the sending of a message by entering the no-quit mode. This prevents aerc from exiting with the :quit command until the operation is done or the exit is forced. Signed-off-by: Koni Marti <koni.marti@gmail.com> Acked-by: Robin Jarry <robin@jarry.cc>
This commit is contained in:
parent
e200cd56bf
commit
76b39311dc
|
@ -15,6 +15,7 @@ import (
|
||||||
"github.com/google/shlex"
|
"github.com/google/shlex"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
|
|
||||||
|
"git.sr.ht/~rjarry/aerc/commands/mode"
|
||||||
"git.sr.ht/~rjarry/aerc/lib"
|
"git.sr.ht/~rjarry/aerc/lib"
|
||||||
"git.sr.ht/~rjarry/aerc/logging"
|
"git.sr.ht/~rjarry/aerc/logging"
|
||||||
"git.sr.ht/~rjarry/aerc/models"
|
"git.sr.ht/~rjarry/aerc/models"
|
||||||
|
@ -96,6 +97,9 @@ func (Send) Execute(aerc *widgets.Aerc, args []string) error {
|
||||||
aerc.RemoveTab(composer)
|
aerc.RemoveTab(composer)
|
||||||
aerc.PushStatus("Sending...", 10*time.Second)
|
aerc.PushStatus("Sending...", 10*time.Second)
|
||||||
|
|
||||||
|
// enter no-quit mode
|
||||||
|
mode.NoQuit()
|
||||||
|
|
||||||
var copyBuf bytes.Buffer // for the Sent folder content if CopyTo is set
|
var copyBuf bytes.Buffer // for the Sent folder content if CopyTo is set
|
||||||
|
|
||||||
failCh := make(chan error)
|
failCh := make(chan error)
|
||||||
|
@ -136,6 +140,9 @@ func (Send) Execute(aerc *widgets.Aerc, args []string) error {
|
||||||
go func() {
|
go func() {
|
||||||
defer logging.PanicHandler()
|
defer logging.PanicHandler()
|
||||||
|
|
||||||
|
// leave no-quit mode
|
||||||
|
defer mode.NoQuitDone()
|
||||||
|
|
||||||
err = <-failCh
|
err = <-failCh
|
||||||
if err != nil {
|
if err != nil {
|
||||||
aerc.PushError(strings.ReplaceAll(err.Error(), "\n", " "))
|
aerc.PushError(strings.ReplaceAll(err.Error(), "\n", " "))
|
||||||
|
|
Loading…
Reference in New Issue