diff --git a/pkg/gui/controllers.go b/pkg/gui/controllers.go index c9906a922..679943579 100644 --- a/pkg/gui/controllers.go +++ b/pkg/gui/controllers.go @@ -25,8 +25,9 @@ func (gui *Gui) resetHelpersAndControllers() { helperCommon := gui.c recordDirectoryHelper := helpers.NewRecordDirectoryHelper(helperCommon) reposHelper := helpers.NewRecentReposHelper(helperCommon, recordDirectoryHelper, gui.onSwitchToNewRepo) - rebaseHelper := helpers.NewMergeAndRebaseHelper(helperCommon) - refsHelper := helpers.NewRefsHelper(helperCommon, rebaseHelper) + baseBranchHelper := helpers.NewBaseBranchHelper(helperCommon) + rebaseHelper := helpers.NewMergeAndRebaseHelper(helperCommon, baseBranchHelper) + refsHelper := helpers.NewRefsHelper(helperCommon, rebaseHelper, baseBranchHelper) suggestionsHelper := helpers.NewSuggestionsHelper(helperCommon) worktreeHelper := helpers.NewWorktreeHelper(helperCommon, reposHelper, refsHelper, suggestionsHelper) diff --git a/pkg/gui/controllers/branches_controller.go b/pkg/gui/controllers/branches_controller.go index c82773525..6d5bcdb7d 100644 --- a/pkg/gui/controllers/branches_controller.go +++ b/pkg/gui/controllers/branches_controller.go @@ -291,14 +291,10 @@ func (self *BranchesController) viewUpstreamOptions(selectedBranch *models.Branc } var disabledReason *types.DisabledReason - candidates, err := self.c.Git().Loaders.BranchLoader.GetBaseBranchCandidates(selectedBranch, self.c.Model().MainBranches) + baseBranch, _, _, err := self.c.Helpers().BaseBranch.ResolveBaseBranch(selectedBranch) if err != nil { return err } - baseBranch := "" - if len(candidates) > 0 { - baseBranch = candidates[0] - } if baseBranch == "" { baseBranch = self.c.Tr.CouldNotDetermineBaseBranch disabledReason = &types.DisabledReason{Text: self.c.Tr.CouldNotDetermineBaseBranch} diff --git a/pkg/gui/controllers/helpers/merge_and_rebase_helper.go b/pkg/gui/controllers/helpers/merge_and_rebase_helper.go index 1707d89bc..e6449d59b 100644 --- a/pkg/gui/controllers/helpers/merge_and_rebase_helper.go +++ b/pkg/gui/controllers/helpers/merge_and_rebase_helper.go @@ -19,6 +19,8 @@ import ( type MergeAndRebaseHelper struct { c *HelperCommon + baseBranchHelper *BaseBranchHelper + // Whether the "continue the rebase/merge?" prompt is currently on screen. // We use this to auto-dismiss it if the operation stops being in the state // that the prompt is offering to act on (e.g. it was continued or aborted @@ -29,9 +31,11 @@ type MergeAndRebaseHelper struct { func NewMergeAndRebaseHelper( c *HelperCommon, + baseBranchHelper *BaseBranchHelper, ) *MergeAndRebaseHelper { return &MergeAndRebaseHelper{ - c: c, + c: c, + baseBranchHelper: baseBranchHelper, } } @@ -343,14 +347,10 @@ func (self *MergeAndRebaseHelper) RebaseOntoRef(ref string) error { disabledReason = &types.DisabledReason{Text: self.c.Tr.CantRebaseOntoSelf} } - candidates, err := self.c.Git().Loaders.BranchLoader.GetBaseBranchCandidates(checkedOutBranch, self.c.Model().MainBranches) + baseBranch, _, _, err := self.baseBranchHelper.ResolveBaseBranch(checkedOutBranch) if err != nil { return err } - baseBranch := "" - if len(candidates) > 0 { - baseBranch = candidates[0] - } if baseBranch == "" { baseBranch = self.c.Tr.CouldNotDetermineBaseBranch baseBranchDisabledReason = &types.DisabledReason{Text: self.c.Tr.CouldNotDetermineBaseBranch} diff --git a/pkg/gui/controllers/helpers/refs_helper.go b/pkg/gui/controllers/helpers/refs_helper.go index 619c6c1e1..1d5011687 100644 --- a/pkg/gui/controllers/helpers/refs_helper.go +++ b/pkg/gui/controllers/helpers/refs_helper.go @@ -18,16 +18,19 @@ import ( type RefsHelper struct { c *HelperCommon - rebaseHelper *MergeAndRebaseHelper + rebaseHelper *MergeAndRebaseHelper + baseBranchHelper *BaseBranchHelper } func NewRefsHelper( c *HelperCommon, rebaseHelper *MergeAndRebaseHelper, + baseBranchHelper *BaseBranchHelper, ) *RefsHelper { return &RefsHelper{ - c: c, - rebaseHelper: rebaseHelper, + c: c, + rebaseHelper: rebaseHelper, + baseBranchHelper: baseBranchHelper, } } @@ -428,14 +431,10 @@ func (self *RefsHelper) NewBranch(from string, fromFormattedName string, suggest func (self *RefsHelper) MoveCommitsToNewBranch() error { currentBranch := self.c.Model().Branches[0] - candidates, err := self.c.Git().Loaders.BranchLoader.GetBaseBranchCandidates(currentBranch, self.c.Model().MainBranches) + baseBranchRef, _, _, err := self.baseBranchHelper.ResolveBaseBranch(currentBranch) if err != nil { return err } - baseBranchRef := "" - if len(candidates) > 0 { - baseBranchRef = candidates[0] - } withNewBranchNamePrompt := func(baseBranchName string, f func(string) error) error { prompt := utils.ResolvePlaceholderString(