Skip to content

Commit a94ae81

Browse files
committed
Extract some functions from CommitFilesController to a new CommitFilesHelper
1 parent bdff0c8 commit a94ae81

File tree

4 files changed

+86
-63
lines changed

4 files changed

+86
-63
lines changed

pkg/gui/controllers.go

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

pkg/gui/controllers/commits_files_controller.go

Lines changed: 4 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ func (self *CommitFilesController) onClickMain(opts gocui.ViewMouseBindingOpts)
214214
}
215215
}
216216

217-
return self.enterCommitFile(node, types.OnFocusOpts{ClickedWindowName: "main", ClickedViewLineIdx: opts.Y, ClickedViewRealLineIdx: line})
217+
return self.c.Helpers().CommitFiles.EnterCommitFile(node, types.OnFocusOpts{ClickedWindowName: "main", ClickedViewLineIdx: opts.Y, ClickedViewRealLineIdx: line})
218218
}
219219

220220
func (self *CommitFilesController) copyDiffToClipboard(path string, toastMessage string) error {
@@ -422,7 +422,7 @@ func (self *CommitFilesController) toggleForPatch(selectedNodes []*filetree.Comm
422422
toggle := func() error {
423423
return self.c.WithWaitingStatus(self.c.Tr.UpdatingPatch, func(gocui.Task) error {
424424
if !self.c.Git().Patch.PatchBuilder.Active() {
425-
if err := self.startPatchBuilder(); err != nil {
425+
if err := self.c.Helpers().CommitFiles.StartPatchBuilder(); err != nil {
426426
return err
427427
}
428428
}
@@ -461,7 +461,7 @@ func (self *CommitFilesController) toggleForPatch(selectedNodes []*filetree.Comm
461461
})
462462
}
463463

464-
from, to, reverse := self.currentFromToReverseForPatchBuilding()
464+
from, to, reverse := self.c.Helpers().CommitFiles.CurrentFromToReverseForPatchBuilding()
465465
if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.NewPatchRequired(from, to, reverse) {
466466
self.c.Confirm(types.ConfirmOpts{
467467
Title: self.c.Tr.DiscardPatch,
@@ -483,67 +483,8 @@ func (self *CommitFilesController) toggleAllForPatch(_ *filetree.CommitFileNode)
483483
return self.toggleForPatch([]*filetree.CommitFileNode{root})
484484
}
485485

486-
func (self *CommitFilesController) startPatchBuilder() error {
487-
commitFilesContext := self.context()
488-
489-
canRebase := commitFilesContext.GetCanRebase()
490-
from, to, reverse := self.currentFromToReverseForPatchBuilding()
491-
492-
self.c.Git().Patch.PatchBuilder.Start(from, to, reverse, canRebase)
493-
return nil
494-
}
495-
496-
func (self *CommitFilesController) currentFromToReverseForPatchBuilding() (string, string, bool) {
497-
commitFilesContext := self.context()
498-
499-
from, to := commitFilesContext.GetFromAndToForDiff()
500-
from, reverse := self.c.Modes().Diffing.GetFromAndReverseArgsForDiff(from)
501-
return from, to, reverse
502-
}
503-
504486
func (self *CommitFilesController) enter(node *filetree.CommitFileNode) error {
505-
return self.enterCommitFile(node, types.OnFocusOpts{ClickedWindowName: "", ClickedViewLineIdx: -1, ClickedViewRealLineIdx: -1})
506-
}
507-
508-
func (self *CommitFilesController) enterCommitFile(node *filetree.CommitFileNode, opts types.OnFocusOpts) error {
509-
if node.File == nil {
510-
return self.handleToggleCommitFileDirCollapsed(node)
511-
}
512-
513-
enterTheFile := func() error {
514-
if !self.c.Git().Patch.PatchBuilder.Active() {
515-
if err := self.startPatchBuilder(); err != nil {
516-
return err
517-
}
518-
}
519-
520-
self.c.Context().Push(self.c.Contexts().CustomPatchBuilder, opts)
521-
return nil
522-
}
523-
524-
from, to, reverse := self.currentFromToReverseForPatchBuilding()
525-
if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.NewPatchRequired(from, to, reverse) {
526-
self.c.Confirm(types.ConfirmOpts{
527-
Title: self.c.Tr.DiscardPatch,
528-
Prompt: self.c.Tr.DiscardPatchConfirm,
529-
HandleConfirm: func() error {
530-
self.c.Git().Patch.PatchBuilder.Reset()
531-
return enterTheFile()
532-
},
533-
})
534-
535-
return nil
536-
}
537-
538-
return enterTheFile()
539-
}
540-
541-
func (self *CommitFilesController) handleToggleCommitFileDirCollapsed(node *filetree.CommitFileNode) error {
542-
self.context().CommitFileTreeViewModel.ToggleCollapsed(node.GetInternalPath())
543-
544-
self.c.PostRefreshUpdate(self.context())
545-
546-
return nil
487+
return self.c.Helpers().CommitFiles.EnterCommitFile(node, types.OnFocusOpts{ClickedWindowName: "", ClickedViewLineIdx: -1, ClickedViewRealLineIdx: -1})
547488
}
548489

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

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)