Skip to content

Commit 29a4e99

Browse files
committed
Extract some functions from CommitFilesController to a new CommitFilesHelper
1 parent b14dfb0 commit 29a4e99

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
@@ -194,7 +194,7 @@ func (self *CommitFilesController) onClickMain(opts gocui.ViewMouseBindingOpts)
194194
}
195195
}
196196

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

200200
func (self *CommitFilesController) checkout(node *filetree.CommitFileNode) error {
@@ -299,7 +299,7 @@ func (self *CommitFilesController) toggleForPatch(selectedNodes []*filetree.Comm
299299
toggle := func() error {
300300
return self.c.WithWaitingStatus(self.c.Tr.UpdatingPatch, func(gocui.Task) error {
301301
if !self.c.Git().Patch.PatchBuilder.Active() {
302-
if err := self.startPatchBuilder(); err != nil {
302+
if err := self.c.Helpers().CommitFiles.StartPatchBuilder(); err != nil {
303303
return err
304304
}
305305
}
@@ -338,7 +338,7 @@ func (self *CommitFilesController) toggleForPatch(selectedNodes []*filetree.Comm
338338
})
339339
}
340340

341-
from, to, reverse := self.currentFromToReverseForPatchBuilding()
341+
from, to, reverse := self.c.Helpers().CommitFiles.CurrentFromToReverseForPatchBuilding()
342342
if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.NewPatchRequired(from, to, reverse) {
343343
self.c.Confirm(types.ConfirmOpts{
344344
Title: self.c.Tr.DiscardPatch,
@@ -360,67 +360,8 @@ func (self *CommitFilesController) toggleAllForPatch(_ *filetree.CommitFileNode)
360360
return self.toggleForPatch([]*filetree.CommitFileNode{root})
361361
}
362362

363-
func (self *CommitFilesController) startPatchBuilder() error {
364-
commitFilesContext := self.context()
365-
366-
canRebase := commitFilesContext.GetCanRebase()
367-
from, to, reverse := self.currentFromToReverseForPatchBuilding()
368-
369-
self.c.Git().Patch.PatchBuilder.Start(from, to, reverse, canRebase)
370-
return nil
371-
}
372-
373-
func (self *CommitFilesController) currentFromToReverseForPatchBuilding() (string, string, bool) {
374-
commitFilesContext := self.context()
375-
376-
from, to := commitFilesContext.GetFromAndToForDiff()
377-
from, reverse := self.c.Modes().Diffing.GetFromAndReverseArgsForDiff(from)
378-
return from, to, reverse
379-
}
380-
381363
func (self *CommitFilesController) enter(node *filetree.CommitFileNode) error {
382-
return self.enterCommitFile(node, types.OnFocusOpts{ClickedWindowName: "", ClickedViewLineIdx: -1, ClickedViewRealLineIdx: -1})
383-
}
384-
385-
func (self *CommitFilesController) enterCommitFile(node *filetree.CommitFileNode, opts types.OnFocusOpts) error {
386-
if node.File == nil {
387-
return self.handleToggleCommitFileDirCollapsed(node)
388-
}
389-
390-
enterTheFile := func() error {
391-
if !self.c.Git().Patch.PatchBuilder.Active() {
392-
if err := self.startPatchBuilder(); err != nil {
393-
return err
394-
}
395-
}
396-
397-
self.c.Context().Push(self.c.Contexts().CustomPatchBuilder, opts)
398-
return nil
399-
}
400-
401-
from, to, reverse := self.currentFromToReverseForPatchBuilding()
402-
if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.NewPatchRequired(from, to, reverse) {
403-
self.c.Confirm(types.ConfirmOpts{
404-
Title: self.c.Tr.DiscardPatch,
405-
Prompt: self.c.Tr.DiscardPatchConfirm,
406-
HandleConfirm: func() error {
407-
self.c.Git().Patch.PatchBuilder.Reset()
408-
return enterTheFile()
409-
},
410-
})
411-
412-
return nil
413-
}
414-
415-
return enterTheFile()
416-
}
417-
418-
func (self *CommitFilesController) handleToggleCommitFileDirCollapsed(node *filetree.CommitFileNode) error {
419-
self.context().CommitFileTreeViewModel.ToggleCollapsed(node.GetPath())
420-
421-
self.c.PostRefreshUpdate(self.context())
422-
423-
return nil
364+
return self.c.Helpers().CommitFiles.EnterCommitFile(node, types.OnFocusOpts{ClickedWindowName: "", ClickedViewLineIdx: -1, ClickedViewRealLineIdx: -1})
424365
}
425366

426367
// 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.GetPath())
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)