From 077b6eb8a34f28d9d11c43b65d4b2a54835b0f31 Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Sat, 26 Mar 2022 17:03:30 +1100 Subject: [PATCH] refactor to make code clearer --- pkg/gui/controllers.go | 24 ++++------ .../controllers/basic_commits_controller.go | 16 +------ ....go => switch_to_diff_files_controller.go} | 46 +++++++------------ ...go => switch_to_sub_commits_controller.go} | 39 ++++++---------- 4 files changed, 42 insertions(+), 83 deletions(-) rename pkg/gui/controllers/{commitish_controller.go => switch_to_diff_files_controller.go} (50%) rename pkg/gui/controllers/{sub_commits_switch_controller.go => switch_to_sub_commits_controller.go} (59%) diff --git a/pkg/gui/controllers.go b/pkg/gui/controllers.go index 13a0eedb5..b0f100f2f 100644 --- a/pkg/gui/controllers.go +++ b/pkg/gui/controllers.go @@ -129,41 +129,35 @@ func (gui *Gui) resetControllers() { stashController := controllers.NewStashController(common) commitFilesController := controllers.NewCommitFilesController(common) - switchToSubCommitsControllerFactory := controllers.NewSubCommitsSwitchControllerFactory( - common, - func(commits []*models.Commit) { gui.State.Model.SubCommits = commits }, - ) + setSubCommits := func(commits []*models.Commit) { gui.State.Model.SubCommits = commits } for _, context := range []controllers.ContextWithRefName{ gui.State.Contexts.Branches, gui.State.Contexts.RemoteBranches, gui.State.Contexts.Tags, } { - controllers.AttachControllers(context, switchToSubCommitsControllerFactory.Create(context)) + controllers.AttachControllers(context, controllers.NewSwitchToSubCommitsController( + common, setSubCommits, context, + )) } - commitishControllerFactory := controllers.NewCommitishControllerFactory( - common, - gui.SwitchToCommitFilesContext, - ) - - for _, context := range []controllers.Commitish{ + for _, context := range []controllers.CanSwitchToDiffFiles{ gui.State.Contexts.LocalCommits, gui.State.Contexts.ReflogCommits, gui.State.Contexts.SubCommits, gui.State.Contexts.Stash, } { - controllers.AttachControllers(context, commitishControllerFactory.Create(context)) + controllers.AttachControllers(context, controllers.NewSwitchToDiffFilesController( + common, gui.SwitchToCommitFilesContext, context, + )) } - basicCommitsControllerFactory := controllers.NewBasicCommitsControllerFactory(common) - for _, context := range []controllers.ContainsCommits{ gui.State.Contexts.LocalCommits, gui.State.Contexts.ReflogCommits, gui.State.Contexts.SubCommits, } { - controllers.AttachControllers(context, basicCommitsControllerFactory.Create(context)) + controllers.AttachControllers(context, controllers.NewBasicCommitsController(common, context)) } controllers.AttachControllers(gui.State.Contexts.Branches, branchesController, gitFlowController) diff --git a/pkg/gui/controllers/basic_commits_controller.go b/pkg/gui/controllers/basic_commits_controller.go index c59686126..bcd180612 100644 --- a/pkg/gui/controllers/basic_commits_controller.go +++ b/pkg/gui/controllers/basic_commits_controller.go @@ -8,10 +8,6 @@ import ( // This controller is for all contexts that contain a list of commits. -type BasicCommitsControllerFactory struct { - controllerCommon *controllerCommon -} - var _ types.IController = &BasicCommitsController{} type ContainsCommits interface { @@ -27,18 +23,10 @@ type BasicCommitsController struct { context ContainsCommits } -func NewBasicCommitsControllerFactory( - common *controllerCommon, -) *BasicCommitsControllerFactory { - return &BasicCommitsControllerFactory{ - controllerCommon: common, - } -} - -func (self *BasicCommitsControllerFactory) Create(context ContainsCommits) *BasicCommitsController { +func NewBasicCommitsController(controllerCommon *controllerCommon, context ContainsCommits) *BasicCommitsController { return &BasicCommitsController{ baseController: baseController{}, - controllerCommon: self.controllerCommon, + controllerCommon: controllerCommon, context: context, } } diff --git a/pkg/gui/controllers/commitish_controller.go b/pkg/gui/controllers/switch_to_diff_files_controller.go similarity index 50% rename from pkg/gui/controllers/commitish_controller.go rename to pkg/gui/controllers/switch_to_diff_files_controller.go index 04e271253..9a3111cae 100644 --- a/pkg/gui/controllers/commitish_controller.go +++ b/pkg/gui/controllers/switch_to_diff_files_controller.go @@ -6,47 +6,35 @@ import ( // This controller is for all contexts that contain commit files. -type CommitishControllerFactory struct { - controllerCommon *controllerCommon - viewFiles func(SwitchToCommitFilesContextOpts) error -} +var _ types.IController = &SwitchToDiffFilesController{} -var _ types.IController = &CommitishController{} - -type Commitish interface { +type CanSwitchToDiffFiles interface { types.Context CanRebase() bool GetSelectedRefName() string } -type CommitishController struct { +type SwitchToDiffFilesController struct { baseController *controllerCommon - context Commitish - + context CanSwitchToDiffFiles viewFiles func(SwitchToCommitFilesContextOpts) error } -func NewCommitishControllerFactory( - common *controllerCommon, +func NewSwitchToDiffFilesController( + controllerCommon *controllerCommon, viewFiles func(SwitchToCommitFilesContextOpts) error, -) *CommitishControllerFactory { - return &CommitishControllerFactory{ - controllerCommon: common, + context CanSwitchToDiffFiles, +) *SwitchToDiffFilesController { + return &SwitchToDiffFilesController{ + baseController: baseController{}, + controllerCommon: controllerCommon, + context: context, viewFiles: viewFiles, } } -func (self *CommitishControllerFactory) Create(context Commitish) *CommitishController { - return &CommitishController{ - baseController: baseController{}, - controllerCommon: self.controllerCommon, - context: context, - viewFiles: self.viewFiles, - } -} - -func (self *CommitishController) GetKeybindings(opts types.KeybindingsOpts) []*types.Binding { +func (self *SwitchToDiffFilesController) GetKeybindings(opts types.KeybindingsOpts) []*types.Binding { bindings := []*types.Binding{ { Key: opts.GetKey(opts.Config.Universal.GoInto), @@ -58,11 +46,11 @@ func (self *CommitishController) GetKeybindings(opts types.KeybindingsOpts) []*t return bindings } -func (self *CommitishController) GetOnClick() func() error { +func (self *SwitchToDiffFilesController) GetOnClick() func() error { return self.checkSelected(self.enter) } -func (self *CommitishController) checkSelected(callback func(string) error) func() error { +func (self *SwitchToDiffFilesController) checkSelected(callback func(string) error) func() error { return func() error { refName := self.context.GetSelectedRefName() if refName == "" { @@ -73,7 +61,7 @@ func (self *CommitishController) checkSelected(callback func(string) error) func } } -func (self *CommitishController) enter(refName string) error { +func (self *SwitchToDiffFilesController) enter(refName string) error { return self.viewFiles(SwitchToCommitFilesContextOpts{ RefName: refName, CanRebase: self.context.CanRebase(), @@ -81,6 +69,6 @@ func (self *CommitishController) enter(refName string) error { }) } -func (self *CommitishController) Context() types.Context { +func (self *SwitchToDiffFilesController) Context() types.Context { return self.context } diff --git a/pkg/gui/controllers/sub_commits_switch_controller.go b/pkg/gui/controllers/switch_to_sub_commits_controller.go similarity index 59% rename from pkg/gui/controllers/sub_commits_switch_controller.go rename to pkg/gui/controllers/switch_to_sub_commits_controller.go index 4c8f086a5..f7e9f6702 100644 --- a/pkg/gui/controllers/sub_commits_switch_controller.go +++ b/pkg/gui/controllers/switch_to_sub_commits_controller.go @@ -6,19 +6,14 @@ import ( "github.com/jesseduffield/lazygit/pkg/gui/types" ) -type SubCommitsSwitchControllerFactory struct { - controllerCommon *controllerCommon - setSubCommits func([]*models.Commit) -} - -var _ types.IController = &SubCommitsSwitchController{} +var _ types.IController = &SwitchToSubCommitsController{} type ContextWithRefName interface { types.Context GetSelectedRefName() string } -type SubCommitsSwitchController struct { +type SwitchToSubCommitsController struct { baseController *controllerCommon context ContextWithRefName @@ -26,26 +21,20 @@ type SubCommitsSwitchController struct { setSubCommits func([]*models.Commit) } -func NewSubCommitsSwitchControllerFactory( - common *controllerCommon, +func NewSwitchToSubCommitsController( + controllerCommon *controllerCommon, setSubCommits func([]*models.Commit), -) *SubCommitsSwitchControllerFactory { - return &SubCommitsSwitchControllerFactory{ - controllerCommon: common, + context ContextWithRefName, +) *SwitchToSubCommitsController { + return &SwitchToSubCommitsController{ + baseController: baseController{}, + controllerCommon: controllerCommon, + context: context, setSubCommits: setSubCommits, } } -func (self *SubCommitsSwitchControllerFactory) Create(context ContextWithRefName) *SubCommitsSwitchController { - return &SubCommitsSwitchController{ - baseController: baseController{}, - controllerCommon: self.controllerCommon, - context: context, - setSubCommits: self.setSubCommits, - } -} - -func (self *SubCommitsSwitchController) GetKeybindings(opts types.KeybindingsOpts) []*types.Binding { +func (self *SwitchToSubCommitsController) GetKeybindings(opts types.KeybindingsOpts) []*types.Binding { bindings := []*types.Binding{ { Handler: self.viewCommits, @@ -57,11 +46,11 @@ func (self *SubCommitsSwitchController) GetKeybindings(opts types.KeybindingsOpt return bindings } -func (self *SubCommitsSwitchController) GetOnClick() func() error { +func (self *SwitchToSubCommitsController) GetOnClick() func() error { return self.viewCommits } -func (self *SubCommitsSwitchController) viewCommits() error { +func (self *SwitchToSubCommitsController) viewCommits() error { refName := self.context.GetSelectedRefName() if refName == "" { return nil @@ -87,6 +76,6 @@ func (self *SubCommitsSwitchController) viewCommits() error { return self.c.PushContext(self.contexts.SubCommits) } -func (self *SubCommitsSwitchController) Context() types.Context { +func (self *SwitchToSubCommitsController) Context() types.Context { return self.context }