mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-02-03 13:21:56 +02:00
81216189e4
It's pointless because you can't check for them in tests anyway, so they unnecessarily slow down the test run by two seconds for no reason.
76 lines
1.7 KiB
Go
76 lines
1.7 KiB
Go
package helpers
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/jesseduffield/gocui"
|
|
"github.com/jesseduffield/lazygit/pkg/gui/status"
|
|
)
|
|
|
|
type AppStatusHelper struct {
|
|
c *HelperCommon
|
|
|
|
statusMgr func() *status.StatusManager
|
|
}
|
|
|
|
func NewAppStatusHelper(c *HelperCommon, statusMgr func() *status.StatusManager) *AppStatusHelper {
|
|
return &AppStatusHelper{
|
|
c: c,
|
|
statusMgr: statusMgr,
|
|
}
|
|
}
|
|
|
|
func (self *AppStatusHelper) Toast(message string) {
|
|
if self.c.RunningIntegrationTest() {
|
|
// Don't bother showing toasts in integration tests. You can't check for
|
|
// them anyway, and they would only slow down the test unnecessarily by
|
|
// two seconds.
|
|
return
|
|
}
|
|
|
|
self.statusMgr().AddToastStatus(message)
|
|
|
|
self.renderAppStatus()
|
|
}
|
|
|
|
// withWaitingStatus wraps a function and shows a waiting status while the function is still executing
|
|
func (self *AppStatusHelper) WithWaitingStatus(message string, f func(gocui.Task) error) {
|
|
self.c.OnWorker(func(task gocui.Task) {
|
|
self.statusMgr().WithWaitingStatus(message, func() {
|
|
self.renderAppStatus()
|
|
|
|
if err := f(task); err != nil {
|
|
self.c.OnUIThread(func() error {
|
|
return self.c.Error(err)
|
|
})
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
func (self *AppStatusHelper) HasStatus() bool {
|
|
return self.statusMgr().HasStatus()
|
|
}
|
|
|
|
func (self *AppStatusHelper) GetStatusString() string {
|
|
return self.statusMgr().GetStatusString()
|
|
}
|
|
|
|
func (self *AppStatusHelper) renderAppStatus() {
|
|
self.c.OnWorker(func(_ gocui.Task) {
|
|
ticker := time.NewTicker(time.Millisecond * 50)
|
|
defer ticker.Stop()
|
|
for range ticker.C {
|
|
appStatus := self.statusMgr().GetStatusString()
|
|
self.c.OnUIThread(func() error {
|
|
self.c.SetViewContent(self.c.Views().AppStatus, appStatus)
|
|
return nil
|
|
})
|
|
|
|
if appStatus == "" {
|
|
return
|
|
}
|
|
}
|
|
})
|
|
}
|