mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-05-11 04:15:48 +02:00
Extract some functions from CommitFilesController to a new CommitFilesHelper
This commit is contained in:
parent
f0b49eba71
commit
1abc026caa
4 changed files with 94 additions and 68 deletions
|
@ -115,6 +115,7 @@ func (gui *Gui) resetHelpersAndControllers() {
|
||||||
AmendHelper: helpers.NewAmendHelper(helperCommon, gpgHelper),
|
AmendHelper: helpers.NewAmendHelper(helperCommon, gpgHelper),
|
||||||
FixupHelper: helpers.NewFixupHelper(helperCommon),
|
FixupHelper: helpers.NewFixupHelper(helperCommon),
|
||||||
Commits: commitsHelper,
|
Commits: commitsHelper,
|
||||||
|
CommitFiles: helpers.NewCommitFilesHelper(helperCommon),
|
||||||
Snake: helpers.NewSnakeHelper(helperCommon),
|
Snake: helpers.NewSnakeHelper(helperCommon),
|
||||||
Diff: diffHelper,
|
Diff: diffHelper,
|
||||||
Repos: reposHelper,
|
Repos: reposHelper,
|
||||||
|
|
|
@ -390,7 +390,7 @@ func (self *CommitFilesController) toggleForPatch(selectedNodes []*filetree.Comm
|
||||||
toggle := func() error {
|
toggle := func() error {
|
||||||
return self.c.WithWaitingStatus(self.c.Tr.UpdatingPatch, func(gocui.Task) error {
|
return self.c.WithWaitingStatus(self.c.Tr.UpdatingPatch, func(gocui.Task) error {
|
||||||
if !self.c.Git().Patch.PatchBuilder.Active() {
|
if !self.c.Git().Patch.PatchBuilder.Active() {
|
||||||
if err := self.startPatchBuilder(); err != nil {
|
if err := self.c.Helpers().CommitFiles.StartPatchBuilder(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -429,7 +429,7 @@ func (self *CommitFilesController) toggleForPatch(selectedNodes []*filetree.Comm
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
from, to, reverse := self.currentFromToReverseForPatchBuilding()
|
from, to, reverse := self.c.Helpers().CommitFiles.CurrentFromToReverseForPatchBuilding()
|
||||||
if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.NewPatchRequired(from, to, reverse) {
|
if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.NewPatchRequired(from, to, reverse) {
|
||||||
self.c.Confirm(types.ConfirmOpts{
|
self.c.Confirm(types.ConfirmOpts{
|
||||||
Title: self.c.Tr.DiscardPatch,
|
Title: self.c.Tr.DiscardPatch,
|
||||||
|
@ -451,72 +451,8 @@ func (self *CommitFilesController) toggleAllForPatch(_ *filetree.CommitFileNode)
|
||||||
return self.toggleForPatch([]*filetree.CommitFileNode{root})
|
return self.toggleForPatch([]*filetree.CommitFileNode{root})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *CommitFilesController) startPatchBuilder() error {
|
|
||||||
commitFilesContext := self.context()
|
|
||||||
|
|
||||||
canRebase := commitFilesContext.GetCanRebase()
|
|
||||||
from, to, reverse := self.currentFromToReverseForPatchBuilding()
|
|
||||||
|
|
||||||
self.c.Git().Patch.PatchBuilder.Start(from, to, reverse, canRebase)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (self *CommitFilesController) currentFromToReverseForPatchBuilding() (string, string, bool) {
|
|
||||||
commitFilesContext := self.context()
|
|
||||||
|
|
||||||
from, to := commitFilesContext.GetFromAndToForDiff()
|
|
||||||
from, reverse := self.c.Modes().Diffing.GetFromAndReverseArgsForDiff(from)
|
|
||||||
return from, to, reverse
|
|
||||||
}
|
|
||||||
|
|
||||||
func (self *CommitFilesController) enter(node *filetree.CommitFileNode) error {
|
func (self *CommitFilesController) enter(node *filetree.CommitFileNode) error {
|
||||||
return self.enterCommitFile(node, types.OnFocusOpts{ClickedWindowName: "", ClickedViewLineIdx: -1, ClickedViewRealLineIdx: -1})
|
return self.c.Helpers().CommitFiles.EnterCommitFile(node, types.OnFocusOpts{ClickedWindowName: "", ClickedViewLineIdx: -1, ClickedViewRealLineIdx: -1})
|
||||||
}
|
|
||||||
|
|
||||||
func (self *CommitFilesController) enterCommitFile(node *filetree.CommitFileNode, opts types.OnFocusOpts) error {
|
|
||||||
if node.File == nil {
|
|
||||||
return self.handleToggleCommitFileDirCollapsed(node)
|
|
||||||
}
|
|
||||||
|
|
||||||
if self.c.AppState.DiffContextSize == 0 {
|
|
||||||
return fmt.Errorf(self.c.Tr.Actions.NotEnoughContextToStage,
|
|
||||||
keybindings.Label(self.c.UserConfig().Keybinding.Universal.IncreaseContextInDiffView))
|
|
||||||
}
|
|
||||||
|
|
||||||
enterTheFile := func() error {
|
|
||||||
if !self.c.Git().Patch.PatchBuilder.Active() {
|
|
||||||
if err := self.startPatchBuilder(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
self.c.Context().Push(self.c.Contexts().CustomPatchBuilder, opts)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
from, to, reverse := self.currentFromToReverseForPatchBuilding()
|
|
||||||
if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.NewPatchRequired(from, to, reverse) {
|
|
||||||
self.c.Confirm(types.ConfirmOpts{
|
|
||||||
Title: self.c.Tr.DiscardPatch,
|
|
||||||
Prompt: self.c.Tr.DiscardPatchConfirm,
|
|
||||||
HandleConfirm: func() error {
|
|
||||||
self.c.Git().Patch.PatchBuilder.Reset()
|
|
||||||
return enterTheFile()
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return enterTheFile()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (self *CommitFilesController) handleToggleCommitFileDirCollapsed(node *filetree.CommitFileNode) error {
|
|
||||||
self.context().CommitFileTreeViewModel.ToggleCollapsed(node.GetInternalPath())
|
|
||||||
|
|
||||||
self.c.PostRefreshUpdate(self.context())
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: this is very similar to handleToggleFileTreeView, could be DRY'd with generics
|
// NOTE: this is very similar to handleToggleFileTreeView, could be DRY'd with generics
|
||||||
|
@ -573,7 +509,7 @@ func (self *CommitFilesController) GetOnClickFocusedMainView() func(mainViewName
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.enterCommitFile(node, types.OnFocusOpts{ClickedWindowName: "main", ClickedViewLineIdx: line, ClickedViewRealLineIdx: line})
|
return self.c.Helpers().CommitFiles.EnterCommitFile(node, types.OnFocusOpts{ClickedWindowName: "main", ClickedViewLineIdx: line, ClickedViewRealLineIdx: line})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
87
pkg/gui/controllers/helpers/commit_files_helper.go
Normal file
87
pkg/gui/controllers/helpers/commit_files_helper.go
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
package helpers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/jesseduffield/lazygit/pkg/gui/context"
|
||||||
|
"github.com/jesseduffield/lazygit/pkg/gui/filetree"
|
||||||
|
"github.com/jesseduffield/lazygit/pkg/gui/keybindings"
|
||||||
|
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
type CommitFilesHelper struct {
|
||||||
|
c *HelperCommon
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewCommitFilesHelper(c *HelperCommon) *CommitFilesHelper {
|
||||||
|
return &CommitFilesHelper{
|
||||||
|
c: c,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *CommitFilesHelper) EnterCommitFile(node *filetree.CommitFileNode, opts types.OnFocusOpts) error {
|
||||||
|
if node.File == nil {
|
||||||
|
self.handleToggleCommitFileDirCollapsed(node)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if self.c.AppState.DiffContextSize == 0 {
|
||||||
|
return fmt.Errorf(self.c.Tr.Actions.NotEnoughContextToStage,
|
||||||
|
keybindings.Label(self.c.UserConfig().Keybinding.Universal.IncreaseContextInDiffView))
|
||||||
|
}
|
||||||
|
|
||||||
|
enterTheFile := func() error {
|
||||||
|
if !self.c.Git().Patch.PatchBuilder.Active() {
|
||||||
|
if err := self.StartPatchBuilder(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
self.c.Context().Push(self.c.Contexts().CustomPatchBuilder, opts)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
from, to, reverse := self.CurrentFromToReverseForPatchBuilding()
|
||||||
|
if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.NewPatchRequired(from, to, reverse) {
|
||||||
|
self.c.Confirm(types.ConfirmOpts{
|
||||||
|
Title: self.c.Tr.DiscardPatch,
|
||||||
|
Prompt: self.c.Tr.DiscardPatchConfirm,
|
||||||
|
HandleConfirm: func() error {
|
||||||
|
self.c.Git().Patch.PatchBuilder.Reset()
|
||||||
|
return enterTheFile()
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return enterTheFile()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *CommitFilesHelper) context() *context.CommitFilesContext {
|
||||||
|
return self.c.Contexts().CommitFiles
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *CommitFilesHelper) handleToggleCommitFileDirCollapsed(node *filetree.CommitFileNode) {
|
||||||
|
self.context().CommitFileTreeViewModel.ToggleCollapsed(node.GetInternalPath())
|
||||||
|
|
||||||
|
self.c.PostRefreshUpdate(self.context())
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *CommitFilesHelper) StartPatchBuilder() error {
|
||||||
|
commitFilesContext := self.context()
|
||||||
|
|
||||||
|
canRebase := commitFilesContext.GetCanRebase()
|
||||||
|
from, to, reverse := self.CurrentFromToReverseForPatchBuilding()
|
||||||
|
|
||||||
|
self.c.Git().Patch.PatchBuilder.Start(from, to, reverse, canRebase)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *CommitFilesHelper) CurrentFromToReverseForPatchBuilding() (string, string, bool) {
|
||||||
|
commitFilesContext := self.context()
|
||||||
|
|
||||||
|
from, to := commitFilesContext.GetFromAndToForDiff()
|
||||||
|
from, reverse := self.c.Modes().Diffing.GetFromAndReverseArgsForDiff(from)
|
||||||
|
return from, to, reverse
|
||||||
|
}
|
|
@ -35,6 +35,7 @@ type Helpers struct {
|
||||||
AmendHelper *AmendHelper
|
AmendHelper *AmendHelper
|
||||||
FixupHelper *FixupHelper
|
FixupHelper *FixupHelper
|
||||||
Commits *CommitsHelper
|
Commits *CommitsHelper
|
||||||
|
CommitFiles *CommitFilesHelper
|
||||||
Snake *SnakeHelper
|
Snake *SnakeHelper
|
||||||
// lives in context package because our contexts need it to render to main
|
// lives in context package because our contexts need it to render to main
|
||||||
Diff *DiffHelper
|
Diff *DiffHelper
|
||||||
|
@ -73,6 +74,7 @@ func NewStubHelpers() *Helpers {
|
||||||
AmendHelper: &AmendHelper{},
|
AmendHelper: &AmendHelper{},
|
||||||
FixupHelper: &FixupHelper{},
|
FixupHelper: &FixupHelper{},
|
||||||
Commits: &CommitsHelper{},
|
Commits: &CommitsHelper{},
|
||||||
|
CommitFiles: &CommitFilesHelper{},
|
||||||
Snake: &SnakeHelper{},
|
Snake: &SnakeHelper{},
|
||||||
Diff: &DiffHelper{},
|
Diff: &DiffHelper{},
|
||||||
Repos: &ReposHelper{},
|
Repos: &ReposHelper{},
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue