summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Haller <stefan@haller-berlin.de>2024-04-14 20:21:37 +0200
committerStefan Haller <stefan@haller-berlin.de>2024-04-18 10:10:30 +0200
commit653994845ef9c1b7f47a9479ec70fd4cd64c5ab8 (patch)
tree3415b63f4a3c62e7e93dcfcae5718be275e0bd32
parentbbad3a70ce522b28571a52b0a6c026464f9e2b3e (diff)
Return error from RefreshOptions.Then
-rw-r--r--pkg/gui/controllers/bisect_controller.go5
-rw-r--r--pkg/gui/controllers/filtering_menu_action.go3
-rw-r--r--pkg/gui/controllers/helpers/mode_helper.go3
-rw-r--r--pkg/gui/controllers/helpers/refresh_helper.go16
-rw-r--r--pkg/gui/controllers/local_commits_controller.go5
-rw-r--r--pkg/gui/types/refresh.go2
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