Skip to content

Commit cd2cccf

Browse files
committed
Extract some functions from CommitFilesController to a new CommitFilesHelper
1 parent 3a8cc8f commit cd2cccf

File tree

4 files changed

+86
-63
lines changed

4 files changed

+86
-63
lines changed

pkg/gui/controllers.go

+1
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

+4-63
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ func (self *CommitFilesController) toggleForPatch(selectedNodes []*filetree.Comm
383383
toggle := func() error {
384384
return self.c.WithWaitingStatus(self.c.Tr.UpdatingPatch, func(gocui.Task) error {
385385
if !self.c.Git().Patch.PatchBuilder.Active() {
386-
if err := self.startPatchBuilder(); err != nil {
386+
if err := self.c.Helpers().CommitFiles.StartPatchBuilder(); err != nil {
387387
return err
388388
}
389389
}
@@ -422,7 +422,7 @@ func (self *CommitFilesController) toggleForPatch(selectedNodes []*filetree.Comm
422422
})
423423
}
424424

425-
from, to, reverse := self.currentFromToReverseForPatchBuilding()
425+
from, to, reverse := self.c.Helpers().CommitFiles.CurrentFromToReverseForPatchBuilding()
426426
if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.NewPatchRequired(from, to, reverse) {
427427
self.c.Confirm(types.ConfirmOpts{
428428
Title: self.c.Tr.DiscardPatch,
@@ -444,67 +444,8 @@ func (self *CommitFilesController) toggleAllForPatch(_ *filetree.CommitFileNode)
444444
return self.toggleForPatch([]*filetree.CommitFileNode{root})
445445
}
446446

447-
func (self *CommitFilesController) startPatchBuilder() error {
448-
commitFilesContext := self.context()
449-
450-
canRebase := commitFilesContext.GetCanRebase()
451-
from, to, reverse := self.currentFromToReverseForPatchBuilding()
452-
453-
self.c.Git().Patch.PatchBuilder.Start(from, to, reverse, canRebase)
454-
return nil
455-
}
456-
457-
func (self *CommitFilesController) currentFromToReverseForPatchBuilding() (string, string, bool) {
458-
commitFilesContext := self.context()
459-
460-
from, to := commitFilesContext.GetFromAndToForDiff()
461-
from, reverse := self.c.Modes().Diffing.GetFromAndReverseArgsForDiff(from)
462-
return from, to, reverse
463-
}
464-
465447
func (self *CommitFilesController) enter(node *filetree.CommitFileNode) error {
466-
return self.enterCommitFile(node, types.OnFocusOpts{ClickedWindowName: "", ClickedViewLineIdx: -1, ClickedViewRealLineIdx: -1})
467-
}
468-
469-
func (self *CommitFilesController) enterCommitFile(node *filetree.CommitFileNode, opts types.OnFocusOpts) error {
470-
if node.File == nil {
471-
return self.handleToggleCommitFileDirCollapsed(node)
472-
}
473-
474-
enterTheFile := func() error {
475-
if !self.c.Git().Patch.PatchBuilder.Active() {
476-
if err := self.startPatchBuilder(); err != nil {
477-
return err
478-
}
479-
}
480-
481-
self.c.Context().Push(self.c.Contexts().CustomPatchBuilder, opts)
482-
return nil
483-
}
484-
485-
from, to, reverse := self.currentFromToReverseForPatchBuilding()
486-
if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.NewPatchRequired(from, to, reverse) {
487-
self.c.Confirm(types.ConfirmOpts{
488-
Title: self.c.Tr.DiscardPatch,
489-
Prompt: self.c.Tr.DiscardPatchConfirm,
490-
HandleConfirm: func() error {
491-
self.c.Git().Patch.PatchBuilder.Reset()
492-
return enterTheFile()
493-
},
494-
})
495-
496-
return nil
497-
}
498-
499-
return enterTheFile()
500-
}
501-
502-
func (self *CommitFilesController) handleToggleCommitFileDirCollapsed(node *filetree.CommitFileNode) error {
503-
self.context().CommitFileTreeViewModel.ToggleCollapsed(node.GetInternalPath())
504-
505-
self.c.PostRefreshUpdate(self.context())
506-
507-
return nil
448+
return self.c.Helpers().CommitFiles.EnterCommitFile(node, types.OnFocusOpts{ClickedWindowName: "", ClickedViewLineIdx: -1, ClickedViewRealLineIdx: -1})
508449
}
509450

510451
// NOTE: this is very similar to handleToggleFileTreeView, could be DRY'd with generics
@@ -561,7 +502,7 @@ func (self *CommitFilesController) GetOnClickFocusedMainView() func(mainViewName
561502
}
562503
}
563504

564-
return self.enterCommitFile(node, types.OnFocusOpts{ClickedWindowName: "main", ClickedViewLineIdx: line, ClickedViewRealLineIdx: line})
505+
return self.c.Helpers().CommitFiles.EnterCommitFile(node, types.OnFocusOpts{ClickedWindowName: "main", ClickedViewLineIdx: line, ClickedViewRealLineIdx: line})
565506
}
566507
}
567508

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

+2
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)