mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-08-09 09:22:48 +03:00
Clean up error handling of WithWaitingStatus and WithWaitingStatusSync
This commit is contained in:
@@ -60,25 +60,24 @@ func (self appStatusHelperTask) Continue() {
|
|||||||
// withWaitingStatus wraps a function and shows a waiting status while the function is still executing
|
// 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) {
|
func (self *AppStatusHelper) WithWaitingStatus(message string, f func(gocui.Task) error) {
|
||||||
self.c.OnWorker(func(task gocui.Task) {
|
self.c.OnWorker(func(task gocui.Task) {
|
||||||
self.statusMgr().WithWaitingStatus(message, self.renderAppStatus, func(waitingStatusHandle *status.WaitingStatusHandle) {
|
err := self.statusMgr().WithWaitingStatus(message, self.renderAppStatus, func(waitingStatusHandle *status.WaitingStatusHandle) error {
|
||||||
if err := f(appStatusHelperTask{task, waitingStatusHandle}); err != nil {
|
return f(appStatusHelperTask{task, waitingStatusHandle})
|
||||||
self.c.OnUIThread(func() error {
|
|
||||||
return err
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
if err != nil {
|
||||||
|
self.c.OnUIThread(func() error {
|
||||||
|
return err
|
||||||
|
})
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *AppStatusHelper) WithWaitingStatusSync(message string, f func() error) {
|
func (self *AppStatusHelper) WithWaitingStatusSync(message string, f func() error) error {
|
||||||
self.statusMgr().WithWaitingStatus(message, func() {}, func(*status.WaitingStatusHandle) {
|
return self.statusMgr().WithWaitingStatus(message, func() {}, func(*status.WaitingStatusHandle) error {
|
||||||
stop := make(chan struct{})
|
stop := make(chan struct{})
|
||||||
defer func() { close(stop) }()
|
defer func() { close(stop) }()
|
||||||
self.renderAppStatusSync(stop)
|
self.renderAppStatusSync(stop)
|
||||||
|
|
||||||
if err := f(); err != nil {
|
return f()
|
||||||
_ = self.c.Error(err)
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -516,8 +516,8 @@ func NewGui(
|
|||||||
func() types.Context { return gui.State.ContextMgr.Current() },
|
func() types.Context { return gui.State.ContextMgr.Current() },
|
||||||
gui.createMenu,
|
gui.createMenu,
|
||||||
func(message string, f func(gocui.Task) error) { gui.helpers.AppStatus.WithWaitingStatus(message, f) },
|
func(message string, f func(gocui.Task) error) { gui.helpers.AppStatus.WithWaitingStatus(message, f) },
|
||||||
func(message string, f func() error) {
|
func(message string, f func() error) error {
|
||||||
gui.helpers.AppStatus.WithWaitingStatusSync(message, f)
|
return gui.helpers.AppStatus.WithWaitingStatusSync(message, f)
|
||||||
},
|
},
|
||||||
func(message string, kind types.ToastKind) { gui.helpers.AppStatus.Toast(message, kind) },
|
func(message string, kind types.ToastKind) { gui.helpers.AppStatus.Toast(message, kind) },
|
||||||
func() string { return gui.Views.Confirmation.TextArea.GetContent() },
|
func() string { return gui.Views.Confirmation.TextArea.GetContent() },
|
||||||
|
@@ -18,7 +18,7 @@ type PopupHandler struct {
|
|||||||
currentContextFn func() types.Context
|
currentContextFn func() types.Context
|
||||||
createMenuFn func(types.CreateMenuOptions) error
|
createMenuFn func(types.CreateMenuOptions) error
|
||||||
withWaitingStatusFn func(message string, f func(gocui.Task) error)
|
withWaitingStatusFn func(message string, f func(gocui.Task) error)
|
||||||
withWaitingStatusSyncFn func(message string, f func() error)
|
withWaitingStatusSyncFn func(message string, f func() error) error
|
||||||
toastFn func(message string, kind types.ToastKind)
|
toastFn func(message string, kind types.ToastKind)
|
||||||
getPromptInputFn func() string
|
getPromptInputFn func() string
|
||||||
inDemo func() bool
|
inDemo func() bool
|
||||||
@@ -34,7 +34,7 @@ func NewPopupHandler(
|
|||||||
currentContextFn func() types.Context,
|
currentContextFn func() types.Context,
|
||||||
createMenuFn func(types.CreateMenuOptions) error,
|
createMenuFn func(types.CreateMenuOptions) error,
|
||||||
withWaitingStatusFn func(message string, f func(gocui.Task) error),
|
withWaitingStatusFn func(message string, f func(gocui.Task) error),
|
||||||
withWaitingStatusSyncFn func(message string, f func() error),
|
withWaitingStatusSyncFn func(message string, f func() error) error,
|
||||||
toastFn func(message string, kind types.ToastKind),
|
toastFn func(message string, kind types.ToastKind),
|
||||||
getPromptInputFn func() string,
|
getPromptInputFn func() string,
|
||||||
inDemo func() bool,
|
inDemo func() bool,
|
||||||
@@ -76,8 +76,7 @@ func (self *PopupHandler) WithWaitingStatus(message string, f func(gocui.Task) e
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *PopupHandler) WithWaitingStatusSync(message string, f func() error) error {
|
func (self *PopupHandler) WithWaitingStatusSync(message string, f func() error) error {
|
||||||
self.withWaitingStatusSyncFn(message, f)
|
return self.withWaitingStatusSyncFn(message, f)
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *PopupHandler) Error(err error) error {
|
func (self *PopupHandler) Error(err error) error {
|
||||||
|
@@ -48,13 +48,12 @@ func NewStatusManager() *StatusManager {
|
|||||||
return &StatusManager{}
|
return &StatusManager{}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *StatusManager) WithWaitingStatus(message string, renderFunc func(), f func(*WaitingStatusHandle)) {
|
func (self *StatusManager) WithWaitingStatus(message string, renderFunc func(), f func(*WaitingStatusHandle) error) error {
|
||||||
handle := &WaitingStatusHandle{statusManager: self, message: message, renderFunc: renderFunc, id: -1}
|
handle := &WaitingStatusHandle{statusManager: self, message: message, renderFunc: renderFunc, id: -1}
|
||||||
handle.Show()
|
handle.Show()
|
||||||
|
defer handle.Hide()
|
||||||
|
|
||||||
f(handle)
|
return f(handle)
|
||||||
|
|
||||||
handle.Hide()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *StatusManager) AddToastStatus(message string, kind types.ToastKind) int {
|
func (self *StatusManager) AddToastStatus(message string, kind types.ToastKind) int {
|
||||||
|
Reference in New Issue
Block a user