1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-06-19 00:28:03 +02:00

Return error from RefreshOptions.Then

This commit is contained in:
Stefan Haller
2024-04-14 20:21:37 +02:00
parent bbad3a70ce
commit 653994845e
6 changed files with 20 additions and 14 deletions

View File

@ -267,16 +267,17 @@ func (self *BisectController) afterMark(selectCurrent bool, waitToReselect bool)
} }
func (self *BisectController) afterBisectMarkRefresh(selectCurrent bool, waitToReselect bool) error { func (self *BisectController) afterBisectMarkRefresh(selectCurrent bool, waitToReselect bool) error {
selectFn := func() { selectFn := func() error {
if selectCurrent { if selectCurrent {
self.selectCurrentBisectCommit() self.selectCurrentBisectCommit()
} }
return nil
} }
if waitToReselect { if waitToReselect {
return self.c.Refresh(types.RefreshOptions{Mode: types.SYNC, Scope: []types.RefreshableView{}, Then: selectFn}) return self.c.Refresh(types.RefreshOptions{Mode: types.SYNC, Scope: []types.RefreshableView{}, Then: selectFn})
} else { } else {
selectFn() _ = selectFn()
return self.c.Helpers().Bisect.PostBisectCommandRefresh() return self.c.Helpers().Bisect.PostBisectCommandRefresh()
} }

View File

@ -120,8 +120,9 @@ func (self *FilteringMenuAction) setFiltering() error {
return err return err
} }
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.COMMITS}, Then: func() { return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.COMMITS}, Then: func() error {
self.c.Contexts().LocalCommits.SetSelection(0) self.c.Contexts().LocalCommits.SetSelection(0)
self.c.Contexts().LocalCommits.FocusLine() self.c.Contexts().LocalCommits.FocusLine()
return nil
}}) }})
} }

View File

@ -171,7 +171,7 @@ func (self *ModeHelper) ClearFiltering() error {
return self.c.Refresh(types.RefreshOptions{ return self.c.Refresh(types.RefreshOptions{
Scope: []types.RefreshableView{types.COMMITS}, Scope: []types.RefreshableView{types.COMMITS},
Then: func() { Then: func() error {
// Find the commit that was last selected in filtering mode, and select it again after refreshing // Find the commit that was last selected in filtering mode, and select it again after refreshing
if !self.c.Contexts().LocalCommits.SelectCommitByHash(selectedCommitHash) { if !self.c.Contexts().LocalCommits.SelectCommitByHash(selectedCommitHash) {
// If we couldn't find it (either because no commit was selected // If we couldn't find it (either because no commit was selected
@ -180,6 +180,7 @@ func (self *ModeHelper) ClearFiltering() error {
// before we entered filtering // before we entered filtering
self.c.Contexts().LocalCommits.SelectCommitByHash(self.c.Modes().Filtering.GetSelectedCommitHash()) self.c.Contexts().LocalCommits.SelectCommitByHash(self.c.Modes().Filtering.GetSelectedCommitHash())
} }
return nil
}, },
}) })
} }

View File

@ -76,7 +76,7 @@ func (self *RefreshHelper) Refresh(options types.RefreshOptions) error {
) )
} }
f := func() { f := func() error {
var scopeSet *set.Set[types.RefreshableView] var scopeSet *set.Set[types.RefreshableView]
if len(options.Scope) == 0 { if len(options.Scope) == 0 {
// not refreshing staging/patch-building unless explicitly requested because we only need // not refreshing staging/patch-building unless explicitly requested because we only need
@ -188,20 +188,22 @@ func (self *RefreshHelper) Refresh(options types.RefreshOptions) error {
wg.Wait() wg.Wait()
if options.Then != nil { if options.Then != nil {
options.Then() if err := options.Then(); err != nil {
return err
}
} }
return nil
} }
if options.Mode == types.BLOCK_UI { if options.Mode == types.BLOCK_UI {
self.c.OnUIThread(func() error { self.c.OnUIThread(func() error {
f() return f()
return nil
}) })
} else { return nil
f()
} }
return nil return f()
} }
func getScopeNames(scopes []types.RefreshableView) []string { func getScopeNames(scopes []types.RefreshableView) []string {

View File

@ -513,7 +513,7 @@ func (self *LocalCommitsController) startInteractiveRebaseWithEdit(
err := self.c.Git().Rebase.EditRebase(commitsToEdit[len(commitsToEdit)-1].Hash) err := self.c.Git().Rebase.EditRebase(commitsToEdit[len(commitsToEdit)-1].Hash)
return self.c.Helpers().MergeAndRebase.CheckMergeOrRebaseWithRefreshOptions( return self.c.Helpers().MergeAndRebase.CheckMergeOrRebaseWithRefreshOptions(
err, err,
types.RefreshOptions{Mode: types.BLOCK_UI, Then: func() { types.RefreshOptions{Mode: types.BLOCK_UI, Then: func() error {
todos := make([]*models.Commit, 0, len(commitsToEdit)-1) todos := make([]*models.Commit, 0, len(commitsToEdit)-1)
for _, c := range commitsToEdit[:len(commitsToEdit)-1] { for _, c := range commitsToEdit[:len(commitsToEdit)-1] {
// Merge commits can't be set to "edit", so just skip them // Merge commits can't be set to "edit", so just skip them
@ -524,7 +524,7 @@ func (self *LocalCommitsController) startInteractiveRebaseWithEdit(
if len(todos) > 0 { if len(todos) > 0 {
err := self.updateTodos(todo.Edit, todos) err := self.updateTodos(todo.Edit, todos)
if err != nil { if err != nil {
_ = self.c.Error(err) return err
} }
} }
@ -540,6 +540,7 @@ func (self *LocalCommitsController) startInteractiveRebaseWithEdit(
if ok1 && ok2 { if ok1 && ok2 {
self.context().SetSelectionRangeAndMode(newSelectedIdx, newRangeStartIdx, rangeSelectMode) self.context().SetSelectionRangeAndMode(newSelectedIdx, newRangeStartIdx, rangeSelectMode)
} }
return nil
}}) }})
}) })
} }

View File

@ -33,7 +33,7 @@ const (
) )
type RefreshOptions struct { type RefreshOptions struct {
Then func() Then func() error
Scope []RefreshableView // e.g. []RefreshableView{COMMITS, BRANCHES}. Leave empty to refresh everything Scope []RefreshableView // e.g. []RefreshableView{COMMITS, BRANCHES}. Leave empty to refresh everything
Mode RefreshMode // one of SYNC (default), ASYNC, and BLOCK_UI Mode RefreshMode // one of SYNC (default), ASYNC, and BLOCK_UI