mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-10-08 22:52:12 +02:00
This is a type that can be useful for model/backend stuff, so move it there. We are going to use it in the API of the commit loader.
75 lines
1.9 KiB
Go
75 lines
1.9 KiB
Go
package controllers
|
|
|
|
import (
|
|
"github.com/jesseduffield/lazygit/pkg/commands/models"
|
|
"github.com/jesseduffield/lazygit/pkg/gui/controllers/helpers"
|
|
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
|
)
|
|
|
|
var _ types.IController = &SwitchToSubCommitsController{}
|
|
|
|
type CanSwitchToSubCommits interface {
|
|
types.IListContext
|
|
GetSelectedRef() models.Ref
|
|
ShowBranchHeadsInSubCommits() bool
|
|
}
|
|
|
|
// Not using our ListControllerTrait because our 'selected' item is not a list item
|
|
// but an attribute on it i.e. the ref of an item.
|
|
type SwitchToSubCommitsController struct {
|
|
baseController
|
|
*ListControllerTrait[models.Ref]
|
|
c *ControllerCommon
|
|
context CanSwitchToSubCommits
|
|
}
|
|
|
|
func NewSwitchToSubCommitsController(
|
|
c *ControllerCommon,
|
|
context CanSwitchToSubCommits,
|
|
) *SwitchToSubCommitsController {
|
|
return &SwitchToSubCommitsController{
|
|
baseController: baseController{},
|
|
ListControllerTrait: NewListControllerTrait(
|
|
c,
|
|
context,
|
|
context.GetSelectedRef,
|
|
func() ([]models.Ref, int, int) {
|
|
panic("Not implemented")
|
|
},
|
|
),
|
|
c: c,
|
|
context: context,
|
|
}
|
|
}
|
|
|
|
func (self *SwitchToSubCommitsController) GetKeybindings(opts types.KeybindingsOpts) []*types.Binding {
|
|
bindings := []*types.Binding{
|
|
{
|
|
Handler: self.viewCommits,
|
|
GetDisabledReason: self.require(self.singleItemSelected()),
|
|
Key: opts.GetKey(opts.Config.Universal.GoInto),
|
|
Description: self.c.Tr.ViewCommits,
|
|
},
|
|
}
|
|
|
|
return bindings
|
|
}
|
|
|
|
func (self *SwitchToSubCommitsController) GetOnClick() func() error {
|
|
return self.viewCommits
|
|
}
|
|
|
|
func (self *SwitchToSubCommitsController) viewCommits() error {
|
|
ref := self.context.GetSelectedRef()
|
|
if ref == nil {
|
|
return nil
|
|
}
|
|
|
|
return self.c.Helpers().SubCommits.ViewSubCommits(helpers.ViewSubCommitsOpts{
|
|
Ref: ref,
|
|
TitleRef: ref.RefName(),
|
|
Context: self.context,
|
|
ShowBranchHeads: self.context.ShowBranchHeadsInSubCommits(),
|
|
})
|
|
}
|