summaryrefslogtreecommitdiffstats
path: root/pkg/gui/app_status_manager.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/gui/app_status_manager.go')
-rw-r--r--pkg/gui/app_status_manager.go28
1 files changed, 27 insertions, 1 deletions
diff --git a/pkg/gui/app_status_manager.go b/pkg/gui/app_status_manager.go
index 2d479e42f..9aee3fa11 100644
--- a/pkg/gui/app_status_manager.go
+++ b/pkg/gui/app_status_manager.go
@@ -1,6 +1,9 @@
package gui
-import "github.com/jesseduffield/lazygit/pkg/utils"
+import (
+ "github.com/jesseduffield/gocui"
+ "github.com/jesseduffield/lazygit/pkg/utils"
+)
type appStatus struct {
name string
@@ -42,3 +45,26 @@ func (m *statusManager) getStatusString() string {
}
return topStatus.name
}
+
+// WithWaitingStatus wraps a function and shows a waiting status while the function is still executing
+func (gui *Gui) WithWaitingStatus(name string, f func() error) error {
+ go func() {
+ gui.g.Update(func(g *gocui.Gui) error {
+ gui.statusManager.addWaitingStatus(name)
+ return nil
+ })
+
+ defer gui.g.Update(func(g *gocui.Gui) error {
+ gui.statusManager.removeStatus(name)
+ return nil
+ })
+
+ if err := f(); err != nil {
+ gui.g.Update(func(g *gocui.Gui) error {
+ return gui.createErrorPanel(gui.g, err.Error())
+ })
+ }
+ }()
+
+ return nil
+}