Skip to content

Commit 64c396f

Browse files
committed
Extract some functions from CommitFilesController to a new CommitFilesHelper
1 parent cbeca72 commit 64c396f

File tree

4 files changed

+94
-68
lines changed

4 files changed

+94
-68
lines changed

pkg/gui/controllers.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ func (gui *Gui) resetHelpersAndControllers() {
115115
AmendHelper: helpers.NewAmendHelper(helperCommon, gpgHelper),
116116
FixupHelper: helpers.NewFixupHelper(helperCommon),
117117
Commits: commitsHelper,
118+
CommitFiles: helpers.NewCommitFilesHelper(helperCommon),
118119
Snake: helpers.NewSnakeHelper(helperCommon),
119120
Diff: diffHelper,
120121
Repos: reposHelper,

pkg/gui/controllers/commits_files_controller.go

Lines changed: 4 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,7 @@ func (self *CommitFilesController) toggleForPatch(selectedNodes []*filetree.Comm
390390
toggle := func() error {
391391
return self.c.WithWaitingStatus(self.c.Tr.UpdatingPatch, func(gocui.Task) error {
392392
if !self.c.Git().Patch.PatchBuilder.Active() {
393-
if err := self.startPatchBuilder(); err != nil {
393+
if err := self.c.Helpers().CommitFiles.StartPatchBuilder(); err != nil {
394394
return err
395395
}
396396
}
@@ -429,7 +429,7 @@ func (self *CommitFilesController) toggleForPatch(selectedNodes []*filetree.Comm
429429
})
430430
}
431431

432-
from, to, reverse := self.currentFromToReverseForPatchBuilding()
432+
from, to, reverse := self.c.Helpers().CommitFiles.CurrentFromToReverseForPatchBuilding()
433433
if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.NewPatchRequired(from, to, reverse) {
434434
self.c.Confirm(types.ConfirmOpts{
435435
Title: self.c.Tr.DiscardPatch,
@@ -451,72 +451,8 @@ func (self *CommitFilesController) toggleAllForPatch(_ *filetree.CommitFileNode)
451451
return self.toggleForPatch([]*filetree.CommitFileNode{root})
452452
}
453453

454-
func (self *CommitFilesController) startPatchBuilder() error {
455-
commitFilesContext := self.context()
456-
457-
canRebase := commitFilesContext.GetCanRebase()
458-
from, to, reverse := self.currentFromToReverseForPatchBuilding()
459-
460-
self.c.Git().Patch.PatchBuilder.Start(from, to, reverse, canRebase)
461-
return nil
462-
}
463-
464-
func (self *CommitFilesController) currentFromToReverseForPatchBuilding() (string, string, bool) {
465-
commitFilesContext := self.context()
466-
467-
from, to := commitFilesContext.GetFromAndToForDiff()
468-
from, reverse := self.c.Modes().Diffing.GetFromAndReverseArgsForDiff(from)
469-
return from, to, reverse
470-
}
471-
472454
func (self *CommitFilesController) enter(node *filetree.CommitFileNode) error {
473-
return self.enterCommitFile(node, types.OnFocusOpts{ClickedWindowName: "", ClickedViewLineIdx: -1, ClickedViewRealLineIdx: -1})
474-
}
475-
476-
func (self *CommitFilesController) enterCommitFile(node *filetree.CommitFileNode, opts types.OnFocusOpts) error {
477-
if node.File == nil {
478-
return self.handleToggleCommitFileDirCollapsed(node)
479-
}
480-
481-
if self.c.AppState.DiffContextSize == 0 {
482-
return fmt.Errorf(self.c.Tr.Actions.NotEnoughContextToStage,
483-
keybindings.Label(self.c.UserConfig().Keybinding.Universal.IncreaseContextInDiffView))
484-
}
485-
486-
enterTheFile := func() error {
487-
if !self.c.Git().Patch.PatchBuilder.Active() {
488-
if err := self.startPatchBuilder(); err != nil {
489-
return err
490-
}
491-
}
492-
493-
self.c.Context().Push(self.c.Contexts().CustomPatchBuilder, opts)
494-
return nil
495-
}
496-
497-
from, to, reverse := self.currentFromToReverseForPatchBuilding()
498-
if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.NewPatchRequired(from, to, reverse) {
499-
self.c.Confirm(types.ConfirmOpts{
500-
Title: self.c.Tr.DiscardPatch,
501-
Prompt: self.c.Tr.DiscardPatchConfirm,
502-
HandleConfirm: func() error {
503-
self.c.Git().Patch.PatchBuilder.Reset()
504-
return enterTheFile()
505-
},
506-
})
507-
508-
return nil
509-
}
510-
511-
return enterTheFile()
512-
}
513-
514-
func (self *CommitFilesController) handleToggleCommitFileDirCollapsed(node *filetree.CommitFileNode) error {
515-
self.context().CommitFileTreeViewModel.ToggleCollapsed(node.GetInternalPath())
516-
517-
self.c.PostRefreshUpdate(self.context())
518-
519-
return nil
455+
return self.c.Helpers().CommitFiles.EnterCommitFile(node, types.OnFocusOpts{ClickedWindowName: "", ClickedViewLineIdx: -1, ClickedViewRealLineIdx: -1})
520456
}
521457

522458
// NOTE: this is very similar to handleToggleFileTreeView, could be DRY'd with generics
@@ -573,7 +509,7 @@ func (self *CommitFilesController) GetOnClickFocusedMainView() func(mainViewName
573509
}
574510
}
575511

576-
return self.enterCommitFile(node, types.OnFocusOpts{ClickedWindowName: "main", ClickedViewLineIdx: line, ClickedViewRealLineIdx: line})
512+
return self.c.Helpers().CommitFiles.EnterCommitFile(node, types.OnFocusOpts{ClickedWindowName: "main", ClickedViewLineIdx: line, ClickedViewRealLineIdx: line})
577513
}
578514
}
579515

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
package helpers
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/jesseduffield/lazygit/pkg/gui/context"
7+
"github.com/jesseduffield/lazygit/pkg/gui/filetree"
8+
"github.com/jesseduffield/lazygit/pkg/gui/keybindings"
9+
"github.com/jesseduffield/lazygit/pkg/gui/types"
10+
)
11+
12+
type CommitFilesHelper struct {
13+
c *HelperCommon
14+
}
15+
16+
func NewCommitFilesHelper(c *HelperCommon) *CommitFilesHelper {
17+
return &CommitFilesHelper{
18+
c: c,
19+
}
20+
}
21+
22+
func (self *CommitFilesHelper) EnterCommitFile(node *filetree.CommitFileNode, opts types.OnFocusOpts) error {
23+
if node.File == nil {
24+
self.handleToggleCommitFileDirCollapsed(node)
25+
return nil
26+
}
27+
28+
if self.c.AppState.DiffContextSize == 0 {
29+
return fmt.Errorf(self.c.Tr.Actions.NotEnoughContextToStage,
30+
keybindings.Label(self.c.UserConfig().Keybinding.Universal.IncreaseContextInDiffView))
31+
}
32+
33+
enterTheFile := func() error {
34+
if !self.c.Git().Patch.PatchBuilder.Active() {
35+
if err := self.StartPatchBuilder(); err != nil {
36+
return err
37+
}
38+
}
39+
40+
self.c.Context().Push(self.c.Contexts().CustomPatchBuilder, opts)
41+
return nil
42+
}
43+
44+
from, to, reverse := self.CurrentFromToReverseForPatchBuilding()
45+
if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.NewPatchRequired(from, to, reverse) {
46+
self.c.Confirm(types.ConfirmOpts{
47+
Title: self.c.Tr.DiscardPatch,
48+
Prompt: self.c.Tr.DiscardPatchConfirm,
49+
HandleConfirm: func() error {
50+
self.c.Git().Patch.PatchBuilder.Reset()
51+
return enterTheFile()
52+
},
53+
})
54+
55+
return nil
56+
}
57+
58+
return enterTheFile()
59+
}
60+
61+
func (self *CommitFilesHelper) context() *context.CommitFilesContext {
62+
return self.c.Contexts().CommitFiles
63+
}
64+
65+
func (self *CommitFilesHelper) handleToggleCommitFileDirCollapsed(node *filetree.CommitFileNode) {
66+
self.context().CommitFileTreeViewModel.ToggleCollapsed(node.GetInternalPath())
67+
68+
self.c.PostRefreshUpdate(self.context())
69+
}
70+
71+
func (self *CommitFilesHelper) StartPatchBuilder() error {
72+
commitFilesContext := self.context()
73+
74+
canRebase := commitFilesContext.GetCanRebase()
75+
from, to, reverse := self.CurrentFromToReverseForPatchBuilding()
76+
77+
self.c.Git().Patch.PatchBuilder.Start(from, to, reverse, canRebase)
78+
return nil
79+
}
80+
81+
func (self *CommitFilesHelper) CurrentFromToReverseForPatchBuilding() (string, string, bool) {
82+
commitFilesContext := self.context()
83+
84+
from, to := commitFilesContext.GetFromAndToForDiff()
85+
from, reverse := self.c.Modes().Diffing.GetFromAndReverseArgsForDiff(from)
86+
return from, to, reverse
87+
}

pkg/gui/controllers/helpers/helpers.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ type Helpers struct {
3535
AmendHelper *AmendHelper
3636
FixupHelper *FixupHelper
3737
Commits *CommitsHelper
38+
CommitFiles *CommitFilesHelper
3839
Snake *SnakeHelper
3940
// lives in context package because our contexts need it to render to main
4041
Diff *DiffHelper
@@ -73,6 +74,7 @@ func NewStubHelpers() *Helpers {
7374
AmendHelper: &AmendHelper{},
7475
FixupHelper: &FixupHelper{},
7576
Commits: &CommitsHelper{},
77+
CommitFiles: &CommitFilesHelper{},
7678
Snake: &SnakeHelper{},
7779
Diff: &DiffHelper{},
7880
Repos: &ReposHelper{},

0 commit comments

Comments
 (0)