diff --git a/pkg/output/tui/progress.go b/pkg/output/tui/progress.go index 4bd8703b..84f184c6 100644 --- a/pkg/output/tui/progress.go +++ b/pkg/output/tui/progress.go @@ -175,8 +175,7 @@ func (b bubbleProgressHandler) speedChange() (tea.Model, tea.Cmd) { } func (b bubbleProgressHandler) percentChange(event percentChange) (tea.Model, tea.Cmd) { - var cmds []tea.Cmd - + cmds := make([]tea.Cmd, 0, 1) cmds = append(cmds, b.prog.SetPercent(float64(event))) if event >= 1.0 { @@ -252,8 +251,9 @@ func (b *BubbleProgress) stop() { if b.tea == nil { return } - b.tea.Quit() + <-b.quitChan + b.tea = nil b.quitChan = nil } diff --git a/pkg/output/tui/spinner.go b/pkg/output/tui/spinner.go index 33f57f4c..438ef358 100644 --- a/pkg/output/tui/spinner.go +++ b/pkg/output/tui/spinner.go @@ -36,7 +36,6 @@ func (w *widgets) NewSpinner(message string) Spinner { return &BubbleSpinner{ InputOutput: output.PrinterFrom(w.ctx), Message: Message{Text: message}, - quitChan: make(chan struct{}), } } @@ -79,6 +78,7 @@ func (b *BubbleSpinner) start() { tea.WithInput(b.InOrStdin()), tea.WithOutput(out), ) + b.quitChan = make(chan struct{}) go func() { t := b.tea _, _ = t.Run() @@ -93,9 +93,12 @@ func (b *BubbleSpinner) stop() { if b.tea == nil { return } + b.tea.Quit() <-b.quitChan + b.tea = nil + b.quitChan = nil endMsg := fmt.Sprintf("%s %s\n", b.Message.Text, spinnerStyle().Render("Done")) _, _ = b.OutOrStdout().Write([]byte(endMsg))