Skip to content

Commit bf1b809

Browse files
committed
Extract some functions from CommitFilesController to a new CommitFilesHelper
1 parent 1e46420 commit bf1b809

File tree

4 files changed

+93
-64
lines changed

4 files changed

+93
-64
lines changed

pkg/gui/controllers.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ func (gui *Gui) resetHelpersAndControllers() {
110110
FixupHelper: helpers.NewFixupHelper(helperCommon),
111111
Commits: commitsHelper,
112112
SuspendResume: helpers.NewSuspendResumeHelper(helperCommon),
113+
CommitFiles: helpers.NewCommitFilesHelper(helperCommon, patchBuildingHelper),
113114
Snake: helpers.NewSnakeHelper(helperCommon),
114115
Diff: diffHelper,
115116
Repos: reposHelper,

pkg/gui/controllers/commits_files_controller.go

Lines changed: 4 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ func (self *CommitFilesController) toggleForPatch(selectedNodes []*filetree.Comm
386386
toggle := func() error {
387387
return self.c.WithWaitingStatus(self.c.Tr.UpdatingPatch, func(gocui.Task) error {
388388
if !self.c.Git().Patch.PatchBuilder.Active() {
389-
if err := self.startPatchBuilder(); err != nil {
389+
if err := self.c.Helpers().CommitFiles.StartPatchBuilder(); err != nil {
390390
return err
391391
}
392392
}
@@ -425,7 +425,7 @@ func (self *CommitFilesController) toggleForPatch(selectedNodes []*filetree.Comm
425425
})
426426
}
427427

428-
from, to, reverse := self.currentFromToReverseForPatchBuilding()
428+
from, to, reverse := self.c.Helpers().CommitFiles.CurrentFromToReverseForPatchBuilding()
429429
mustDiscardPatch := self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.NewPatchRequired(from, to, reverse)
430430
return self.c.ConfirmIf(mustDiscardPatch, types.ConfirmOpts{
431431
Title: self.c.Tr.DiscardPatch,
@@ -445,68 +445,8 @@ func (self *CommitFilesController) toggleAllForPatch(_ *filetree.CommitFileNode)
445445
return self.toggleForPatch([]*filetree.CommitFileNode{root})
446446
}
447447

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

512452
// NOTE: this is very similar to handleToggleFileTreeView, could be DRY'd with generics
@@ -563,7 +503,7 @@ func (self *CommitFilesController) GetOnClickFocusedMainView() func(mainViewName
563503
}
564504
}
565505

566-
return self.enterCommitFile(node, types.OnFocusOpts{ClickedWindowName: "main", ClickedViewLineIdx: line, ClickedViewRealLineIdx: line})
506+
return self.c.Helpers().CommitFiles.EnterCommitFile(node, types.OnFocusOpts{ClickedWindowName: "main", ClickedViewLineIdx: line, ClickedViewRealLineIdx: line})
567507
}
568508
}
569509

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

pkg/gui/controllers/helpers/helpers.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ type Helpers struct {
3636
FixupHelper *FixupHelper
3737
Commits *CommitsHelper
3838
SuspendResume *SuspendResumeHelper
39+
CommitFiles *CommitFilesHelper
3940
Snake *SnakeHelper
4041
// lives in context package because our contexts need it to render to main
4142
Diff *DiffHelper
@@ -74,6 +75,7 @@ func NewStubHelpers() *Helpers {
7475
AmendHelper: &AmendHelper{},
7576
FixupHelper: &FixupHelper{},
7677
Commits: &CommitsHelper{},
78+
CommitFiles: &CommitFilesHelper{},
7779
Snake: &SnakeHelper{},
7880
Diff: &DiffHelper{},
7981
Repos: &ReposHelper{},

0 commit comments

Comments
 (0)