diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2020-01-31 23:16:55 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2020-02-01 00:23:22 +1100 |
commit | cf6be928a375ea459222de69c3aa1da12ff9a23a (patch) | |
tree | a76534eb4675b50db052de378e66ebda1e63d332 /pkg/gui/app_status_manager.go | |
parent | c907c55144b4875d8193bbeb620b2dcc2793942e (diff) |
only rerender app status when we need to
Diffstat (limited to 'pkg/gui/app_status_manager.go')
-rw-r--r-- | pkg/gui/app_status_manager.go | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/pkg/gui/app_status_manager.go b/pkg/gui/app_status_manager.go index 9aee3fa11..577dcb37d 100644 --- a/pkg/gui/app_status_manager.go +++ b/pkg/gui/app_status_manager.go @@ -1,6 +1,8 @@ package gui import ( + "time" + "github.com/jesseduffield/gocui" "github.com/jesseduffield/lazygit/pkg/utils" ) @@ -49,15 +51,24 @@ func (m *statusManager) getStatusString() string { // 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 - }) + gui.statusManager.addWaitingStatus(name) - defer gui.g.Update(func(g *gocui.Gui) error { + defer func() { gui.statusManager.removeStatus(name) - return nil - }) + }() + + go func() { + for range time.Tick(time.Millisecond * 50) { + appStatus := gui.statusManager.getStatusString() + gui.Log.Warn(appStatus) + if appStatus == "" { + return + } + if err := gui.renderString(gui.g, "appStatus", appStatus); err != nil { + gui.Log.Warn(err) + } + } + }() if err := f(); err != nil { gui.g.Update(func(g *gocui.Gui) error { |