This begins a big refactor of moving more code out of the Gui struct into contexts, controllers, and helpers. We also move some code into structs in the gui package purely for the sake of better encapsulation
71 lines
1.8 KiB
Go
71 lines
1.8 KiB
Go
package controllers
|
|
|
|
import (
|
|
"github.com/jesseduffield/lazygit/pkg/gui/context"
|
|
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
|
"github.com/jesseduffield/lazygit/pkg/utils"
|
|
)
|
|
|
|
type SubCommitsController struct {
|
|
baseController
|
|
*controllerCommon
|
|
context *context.SubCommitsContext
|
|
}
|
|
|
|
var _ types.IController = &SubCommitsController{}
|
|
|
|
func NewSubCommitsController(
|
|
common *controllerCommon,
|
|
context *context.SubCommitsContext,
|
|
) *SubCommitsController {
|
|
return &SubCommitsController{
|
|
baseController: baseController{},
|
|
controllerCommon: common,
|
|
context: context,
|
|
}
|
|
}
|
|
|
|
func (self *SubCommitsController) Context() types.Context {
|
|
return self.context
|
|
}
|
|
|
|
func (self *SubCommitsController) GetOnRenderToMain() func() error {
|
|
return func() error {
|
|
return self.helpers.Diff.WithDiffModeCheck(func() error {
|
|
commit := self.context.GetSelected()
|
|
var task types.UpdateTask
|
|
if commit == nil {
|
|
task = types.NewRenderStringTask("No commits")
|
|
} else {
|
|
cmdObj := self.git.Commit.ShowCmdObj(commit.Sha, self.modes.Filtering.GetPath(), self.c.State().GetIgnoreWhitespaceInDiffView())
|
|
|
|
task = types.NewRunPtyTask(cmdObj.GetCmd())
|
|
}
|
|
|
|
return self.c.RenderToMainViews(types.RefreshMainOpts{
|
|
Pair: self.c.MainViewPairs().Normal,
|
|
Main: &types.ViewUpdateOpts{
|
|
Title: "Commit",
|
|
Task: task,
|
|
},
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
func (self *SubCommitsController) GetOnFocus() func() error {
|
|
return func() error {
|
|
context := self.context
|
|
if context.GetSelectedLineIdx() > COMMIT_THRESHOLD && context.GetLimitCommits() {
|
|
context.SetLimitCommits(false)
|
|
go utils.Safe(func() {
|
|
if err := self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUB_COMMITS}}); err != nil {
|
|
_ = self.c.Error(err)
|
|
}
|
|
})
|
|
}
|
|
|
|
return nil
|
|
}
|
|
}
|