Skip to content

Commit de7cfc1

Browse files
committed
Extract some functions from CommitFilesController to a new CommitFilesHelper
1 parent 70863d3 commit de7cfc1

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
@@ -208,7 +208,7 @@ func (self *CommitFilesController) onClickMain(opts gocui.ViewMouseBindingOpts)
208208
}
209209
}
210210

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

214214
func (self *CommitFilesController) checkout(node *filetree.CommitFileNode) error {
@@ -313,7 +313,7 @@ func (self *CommitFilesController) toggleForPatch(selectedNodes []*filetree.Comm
313313
toggle := func() error {
314314
return self.c.WithWaitingStatus(self.c.Tr.UpdatingPatch, func(gocui.Task) error {
315315
if !self.c.Git().Patch.PatchBuilder.Active() {
316-
if err := self.startPatchBuilder(); err != nil {
316+
if err := self.c.Helpers().CommitFiles.StartPatchBuilder(); err != nil {
317317
return err
318318
}
319319
}
@@ -352,7 +352,7 @@ func (self *CommitFilesController) toggleForPatch(selectedNodes []*filetree.Comm
352352
})
353353
}
354354

355-
from, to, reverse := self.currentFromToReverseForPatchBuilding()
355+
from, to, reverse := self.c.Helpers().CommitFiles.CurrentFromToReverseForPatchBuilding()
356356
if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.NewPatchRequired(from, to, reverse) {
357357
self.c.Confirm(types.ConfirmOpts{
358358
Title: self.c.Tr.DiscardPatch,
@@ -374,67 +374,8 @@ func (self *CommitFilesController) toggleAllForPatch(_ *filetree.CommitFileNode)
374374
return self.toggleForPatch([]*filetree.CommitFileNode{root})
375375
}
376376

377-
func (self *CommitFilesController) startPatchBuilder() error {
378-
commitFilesContext := self.context()
379-
380-
canRebase := commitFilesContext.GetCanRebase()
381-
from, to, reverse := self.currentFromToReverseForPatchBuilding()
382-
383-
self.c.Git().Patch.PatchBuilder.Start(from, to, reverse, canRebase)
384-
return nil
385-
}
386-
387-
func (self *CommitFilesController) currentFromToReverseForPatchBuilding() (string, string, bool) {
388-
commitFilesContext := self.context()
389-
390-
from, to := commitFilesContext.GetFromAndToForDiff()
391-
from, reverse := self.c.Modes().Diffing.GetFromAndReverseArgsForDiff(from)
392-
return from, to, reverse
393-
}
394-
395377
func (self *CommitFilesController) enter(node *filetree.CommitFileNode) error {
396-
return self.enterCommitFile(node, types.OnFocusOpts{ClickedWindowName: "", ClickedViewLineIdx: -1, ClickedViewRealLineIdx: -1})
397-
}
398-
399-
func (self *CommitFilesController) enterCommitFile(node *filetree.CommitFileNode, opts types.OnFocusOpts) error {
400-
if node.File == nil {
401-
return self.handleToggleCommitFileDirCollapsed(node)
402-
}
403-
404-
enterTheFile := func() error {
405-
if !self.c.Git().Patch.PatchBuilder.Active() {
406-
if err := self.startPatchBuilder(); err != nil {
407-
return err
408-
}
409-
}
410-
411-
self.c.Context().Push(self.c.Contexts().CustomPatchBuilder, opts)
412-
return nil
413-
}
414-
415-
from, to, reverse := self.currentFromToReverseForPatchBuilding()
416-
if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.NewPatchRequired(from, to, reverse) {
417-
self.c.Confirm(types.ConfirmOpts{
418-
Title: self.c.Tr.DiscardPatch,
419-
Prompt: self.c.Tr.DiscardPatchConfirm,
420-
HandleConfirm: func() error {
421-
self.c.Git().Patch.PatchBuilder.Reset()
422-
return enterTheFile()
423-
},
424-
})
425-
426-
return nil
427-
}
428-
429-
return enterTheFile()
430-
}
431-
432-
func (self *CommitFilesController) handleToggleCommitFileDirCollapsed(node *filetree.CommitFileNode) error {
433-
self.context().CommitFileTreeViewModel.ToggleCollapsed(node.GetPath())
434-
435-
self.c.PostRefreshUpdate(self.context())
436-
437-
return nil
378+
return self.c.Helpers().CommitFiles.EnterCommitFile(node, types.OnFocusOpts{ClickedWindowName: "", ClickedViewLineIdx: -1, ClickedViewRealLineIdx: -1})
438379
}
439380

440381
// 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)