diff options
author | Stefan Haller <stefan@haller-berlin.de> | 2024-04-14 20:21:37 +0200 |
---|---|---|
committer | Stefan Haller <stefan@haller-berlin.de> | 2024-04-18 10:10:30 +0200 |
commit | 653994845ef9c1b7f47a9479ec70fd4cd64c5ab8 (patch) | |
tree | 3415b63f4a3c62e7e93dcfcae5718be275e0bd32 | |
parent | bbad3a70ce522b28571a52b0a6c026464f9e2b3e (diff) |
Return error from RefreshOptions.Then
-rw-r--r-- | pkg/gui/controllers/bisect_controller.go | 5 | ||||
-rw-r--r-- | pkg/gui/controllers/filtering_menu_action.go | 3 | ||||
-rw-r--r-- | pkg/gui/controllers/helpers/mode_helper.go | 3 | ||||
-rw-r--r-- | pkg/gui/controllers/helpers/refresh_helper.go | 16 | ||||
-rw-r--r-- | pkg/gui/controllers/local_commits_controller.go | 5 | ||||
-rw-r--r-- | pkg/gui/types/refresh.go | 2 |
6 files changed, 20 insertions, 14 deletions
diff --git a/pkg/gui/controllers/bisect_controller.go b/pkg/gui/controllers/bisect_controller.go index c4439cb7b..0db570107 100644 --- a/pkg/gui/controllers/bisect_controller.go +++ b/pkg/gui/controllers/bisect_controller.go @@ -267,16 +267,17 @@ func (self *BisectController) afterMark(selectCurrent bool, waitToReselect bool) } func (self *BisectController) afterBisectMarkRefresh(selectCurrent bool, waitToReselect bool) error { - selectFn := func() { + selectFn := func() error { if selectCurrent { self.selectCurrentBisectCommit() } + return nil } if waitToReselect { return self.c.Refresh(types.RefreshOptions{Mode: types.SYNC, Scope: []types.RefreshableView{}, Then: selectFn}) } else { - selectFn() + _ = selectFn() return self.c.Helpers().Bisect.PostBisectCommandRefresh() } diff --git a/pkg/gui/controllers/filtering_menu_action.go b/pkg/gui/controllers/filtering_menu_action.go index 3771cdabd..a340c3e9a 100644 --- a/pkg/gui/controllers/filtering_menu_action.go +++ b/pkg/gui/controllers/filtering_menu_action.go @@ -120,8 +120,9 @@ func (self *FilteringMenuAction) setFiltering() error { 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.FocusLine() + return nil }}) } diff --git a/pkg/gui/controllers/helpers/mode_helper.go b/pkg/gui/controllers/helpers/mode_helper.go index 0745c2288..579862155 100644 --- a/pkg/gui/controllers/helpers/mode_helper.go +++ b/pkg/gui/controllers/helpers/mode_helper.go @@ -171,7 +171,7 @@ func (self *ModeHelper) ClearFiltering() error { return self.c.Refresh(types.RefreshOptions{ 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 if !self.c.Contexts().LocalCommits.SelectCommitByHash(selectedCommitHash) { // 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 self.c.Contexts().LocalCommits.SelectCommitByHash(self.c.Modes().Filtering.GetSelectedCommitHash()) } + return nil }, }) } diff --git a/pkg/gui/controllers/helpers/refresh_helper.go b/pkg/gui/controllers/helpers/refresh_helper.go index 579c8a9af..8d88faeec 100644 --- a/pkg/gui/controllers/helpers/refresh_helper.go +++ b/pkg/gui/controllers/helpers/refresh_helper.go @@ -76,7 +76,7 @@ func (self *RefreshHelper) Refresh(options types.RefreshOptions) error { ) } - f := func() { + f := func() error { var scopeSet *set.Set[types.RefreshableView] if len(options.Scope) == 0 { // 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() if options.Then != nil { - options.Then() + if err := options.Then(); err != nil { + return err + } } + + return nil } if options.Mode == types.BLOCK_UI { self.c.OnUIThread(func() error { - f() - return nil + return f() }) - } else { - f() + return nil } - return nil + return f() } func getScopeNames(scopes []types.RefreshableView) []string { diff --git a/pkg/gui/controllers/local_commits_controller.go b/pkg/gui/controllers/local_commits_controller.go index b889ec361..1336f5237 100644 --- a/pkg/gui/controllers/local_commits_controller.go +++ b/pkg/gui/controllers/local_commits_controller.go @@ -513,7 +513,7 @@ func (self *LocalCommitsController) startInteractiveRebaseWithEdit( err := self.c.Git().Rebase.EditRebase(commitsToEdit[len(commitsToEdit)-1].Hash) return self.c.Helpers().MergeAndRebase.CheckMergeOrRebaseWithRefreshOptions( 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) for _, c := range commitsToEdit[:len(commitsToEdit)-1] { // Merge commits can't be set to "edit", so just skip them @@ -524,7 +524,7 @@ func (self *LocalCommitsController) startInteractiveRebaseWithEdit( if len(todos) > 0 { err := self.updateTodos(todo.Edit, todos) if err != nil { - _ = self.c.Error(err) + return err } } @@ -540,6 +540,7 @@ func (self *LocalCommitsController) startInteractiveRebaseWithEdit( if ok1 && ok2 { self.context().SetSelectionRangeAndMode(newSelectedIdx, newRangeStartIdx, rangeSelectMode) } + return nil }}) }) } diff --git a/pkg/gui/types/refresh.go b/pkg/gui/types/refresh.go index c20a5f54a..2d6a383c3 100644 --- a/pkg/gui/types/refresh.go +++ b/pkg/gui/types/refresh.go @@ -33,7 +33,7 @@ const ( ) type RefreshOptions struct { - Then func() + Then func() error Scope []RefreshableView // e.g. []RefreshableView{COMMITS, BRANCHES}. Leave empty to refresh everything Mode RefreshMode // one of SYNC (default), ASYNC, and BLOCK_UI |