From f97de692e32be50a54a93b75d3686da0495275cb Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Sun, 30 Jan 2022 10:40:48 +1100 Subject: move helpers into their own struct --- pkg/gui/gui.go | 66 ++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 37 insertions(+), 29 deletions(-) (limited to 'pkg/gui/gui.go') diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index 1d9ee2d76..09d508e44 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -68,6 +68,15 @@ func NewContextManager(initialContext types.Context) ContextManager { } } +type Helpers struct { + refs *RefsHelper + bisect *controllers.BisectHelper + suggestions *SuggestionsHelper + files *FilesHelper + workingTree *WorkingTreeHelper + tags *controllers.TagsHelper +} + type Repo string // Gui wraps the gocui Gui object which handles rendering and events @@ -143,12 +152,6 @@ type Gui struct { PrevLayout PrevLayout - c *types.ControllerCommon - refsHelper *RefsHelper - suggestionsHelper *SuggestionsHelper - filesHelper *FilesHelper - workingTreeHelper *WorkingTreeHelper - // this is the initial dir we are in upon opening lazygit. We hold onto this // in case we want to restore it before quitting for users who have set up // the feature for changing directory upon quit. @@ -156,6 +159,9 @@ type Gui struct { // is because some users want to keep track of the current lazygit directory in an outside // process InitialDir string + + c *types.ControllerCommon + helpers *Helpers } // we keep track of some stuff from one render to the next to see if certain @@ -571,23 +577,24 @@ func (gui *Gui) setControllers() { getState := func() *GuiRepoState { return gui.State } getContexts := func() context.ContextTree { return gui.State.Contexts } // TODO: have a getGit function too - refsHelper := NewRefsHelper( - controllerCommon, - gui.git, - getState, - ) - gui.refsHelper = refsHelper - gui.suggestionsHelper = NewSuggestionsHelper(controllerCommon, getState, gui.refreshSuggestions) - gui.filesHelper = NewFilesHelper(controllerCommon, gui.git, osCommand) - gui.workingTreeHelper = NewWorkingTreeHelper(func() *filetree.FileTreeViewModel { return gui.State.FileTreeViewModel }) - - tagsHelper := controllers.NewTagsHelper(controllerCommon, gui.git) + gui.helpers = &Helpers{ + refs: NewRefsHelper( + controllerCommon, + gui.git, + getState, + ), + bisect: controllers.NewBisectHelper(controllerCommon, gui.git), + suggestions: NewSuggestionsHelper(controllerCommon, getState, gui.refreshSuggestions), + files: NewFilesHelper(controllerCommon, gui.git, osCommand), + workingTree: NewWorkingTreeHelper(func() *filetree.FileTreeViewModel { return gui.State.FileTreeViewModel }), + tags: controllers.NewTagsHelper(controllerCommon, gui.git), + } syncController := controllers.NewSyncController( controllerCommon, gui.git, gui.getCheckedOutBranch, - gui.suggestionsHelper, + gui.helpers.suggestions, gui.getSuggestedRemote, gui.checkMergeOrRebase, ) @@ -616,19 +623,19 @@ func (gui *Gui) setControllers() { func() []*models.Commit { return gui.State.Commits }, gui.getSelectedPath, gui.switchToMerge, - gui.suggestionsHelper, - gui.refsHelper, - gui.filesHelper, - gui.workingTreeHelper, + gui.helpers.suggestions, + gui.helpers.refs, + gui.helpers.files, + gui.helpers.workingTree, ), Tags: controllers.NewTagsController( controllerCommon, func() *context.TagsContext { return gui.State.Contexts.Tags }, gui.git, getContexts, - tagsHelper, - refsHelper, - gui.suggestionsHelper, + gui.helpers.tags, + gui.helpers.refs, + gui.helpers.suggestions, gui.switchToSubCommitsContext, ), LocalCommits: controllers.NewLocalCommitsController( @@ -636,8 +643,8 @@ func (gui *Gui) setControllers() { func() types.IListContext { return gui.State.Contexts.BranchCommits }, osCommand, gui.git, - tagsHelper, - refsHelper, + gui.helpers.tags, + gui.helpers.refs, gui.getSelectedLocalCommit, func() []*models.Commit { return gui.State.Commits }, func() int { return gui.State.Panels.Commits.SelectedLineIdx }, @@ -668,14 +675,15 @@ func (gui *Gui) setControllers() { controllerCommon, func() types.IListContext { return gui.State.Contexts.BranchCommits }, gui.git, + gui.helpers.bisect, gui.getSelectedLocalCommit, func() []*models.Commit { return gui.State.Commits }, ), Undo: controllers.NewUndoController( controllerCommon, gui.git, - refsHelper, - gui.workingTreeHelper, + gui.helpers.refs, + gui.helpers.workingTree, func() []*models.Commit { return gui.State.FilteredReflogCommits }, ), Sync: syncController, -- cgit v1.2.3