mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-02-25 18:55:28 -06:00
use generics to DRY up context code
This commit is contained in:
@@ -8,7 +8,7 @@ import (
|
||||
type ICommitFileTree interface {
|
||||
ITree
|
||||
|
||||
GetItemAtIndex(index int) *CommitFileNode
|
||||
Get(index int) *CommitFileNode
|
||||
GetFile(path string) *models.CommitFile
|
||||
GetAllItems() []*CommitFileNode
|
||||
GetAllFiles() []*models.CommitFile
|
||||
@@ -42,7 +42,7 @@ func (self *CommitFileTree) ToggleShowTree() {
|
||||
self.SetTree()
|
||||
}
|
||||
|
||||
func (self *CommitFileTree) GetItemAtIndex(index int) *CommitFileNode {
|
||||
func (self *CommitFileTree) Get(index int) *CommitFileNode {
|
||||
// need to traverse the three depth first until we get to the index.
|
||||
return self.tree.GetNodeAtIndex(index+1, self.collapsedPaths) // ignoring root
|
||||
}
|
||||
@@ -60,7 +60,7 @@ func (self *CommitFileTree) GetAllItems() []*CommitFileNode {
|
||||
return self.tree.Flatten(self.collapsedPaths)[1:] // ignoring root
|
||||
}
|
||||
|
||||
func (self *CommitFileTree) GetItemsLength() int {
|
||||
func (self *CommitFileTree) Len() int {
|
||||
return self.tree.Size(self.collapsedPaths) - 1 // ignoring root
|
||||
}
|
||||
|
||||
|
||||
@@ -61,16 +61,16 @@ func (self *CommitFileTreeViewModel) SetCanRebase(canRebase bool) {
|
||||
self.canRebase = canRebase
|
||||
}
|
||||
|
||||
func (self *CommitFileTreeViewModel) GetSelectedFileNode() *CommitFileNode {
|
||||
if self.GetItemsLength() == 0 {
|
||||
func (self *CommitFileTreeViewModel) GetSelected() *CommitFileNode {
|
||||
if self.Len() == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
return self.GetItemAtIndex(self.GetSelectedLineIdx())
|
||||
return self.Get(self.GetSelectedLineIdx())
|
||||
}
|
||||
|
||||
func (self *CommitFileTreeViewModel) GetSelectedFile() *models.CommitFile {
|
||||
node := self.GetSelectedFileNode()
|
||||
node := self.GetSelected()
|
||||
if node == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -79,7 +79,7 @@ func (self *CommitFileTreeViewModel) GetSelectedFile() *models.CommitFile {
|
||||
}
|
||||
|
||||
func (self *CommitFileTreeViewModel) GetSelectedPath() string {
|
||||
node := self.GetSelectedFileNode()
|
||||
node := self.GetSelected()
|
||||
if node == nil {
|
||||
return ""
|
||||
}
|
||||
@@ -89,7 +89,7 @@ func (self *CommitFileTreeViewModel) GetSelectedPath() string {
|
||||
|
||||
// duplicated from file_tree_view_model.go. Generics will help here
|
||||
func (self *CommitFileTreeViewModel) ToggleShowTree() {
|
||||
selectedNode := self.GetSelectedFileNode()
|
||||
selectedNode := self.GetSelected()
|
||||
|
||||
self.ICommitFileTree.ToggleShowTree()
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ type ITree interface {
|
||||
ExpandToPath(path string)
|
||||
ToggleShowTree()
|
||||
GetIndexForPath(path string) (int, bool)
|
||||
GetItemsLength() int
|
||||
Len() int
|
||||
SetTree()
|
||||
IsCollapsed(path string) bool
|
||||
ToggleCollapsed(path string)
|
||||
@@ -35,7 +35,7 @@ type IFileTree interface {
|
||||
|
||||
FilterFiles(test func(*models.File) bool) []*models.File
|
||||
SetFilter(filter FileTreeDisplayFilter)
|
||||
GetItemAtIndex(index int) *FileNode
|
||||
Get(index int) *FileNode
|
||||
GetFile(path string) *models.File
|
||||
GetAllItems() []*FileNode
|
||||
GetAllFiles() []*models.File
|
||||
@@ -104,7 +104,7 @@ func (self *FileTree) ToggleShowTree() {
|
||||
self.SetTree()
|
||||
}
|
||||
|
||||
func (self *FileTree) GetItemAtIndex(index int) *FileNode {
|
||||
func (self *FileTree) Get(index int) *FileNode {
|
||||
// need to traverse the three depth first until we get to the index.
|
||||
return self.tree.GetNodeAtIndex(index+1, self.collapsedPaths) // ignoring root
|
||||
}
|
||||
@@ -135,7 +135,7 @@ func (self *FileTree) GetAllItems() []*FileNode {
|
||||
return self.tree.Flatten(self.collapsedPaths)[1:] // ignoring root
|
||||
}
|
||||
|
||||
func (self *FileTree) GetItemsLength() int {
|
||||
func (self *FileTree) Len() int {
|
||||
return self.tree.Size(self.collapsedPaths) - 1 // ignoring root
|
||||
}
|
||||
|
||||
|
||||
@@ -35,16 +35,16 @@ func NewFileTreeViewModel(getFiles func() []*models.File, log *logrus.Entry, sho
|
||||
}
|
||||
}
|
||||
|
||||
func (self *FileTreeViewModel) GetSelectedFileNode() *FileNode {
|
||||
if self.GetItemsLength() == 0 {
|
||||
func (self *FileTreeViewModel) GetSelected() *FileNode {
|
||||
if self.Len() == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
return self.GetItemAtIndex(self.GetSelectedLineIdx())
|
||||
return self.Get(self.GetSelectedLineIdx())
|
||||
}
|
||||
|
||||
func (self *FileTreeViewModel) GetSelectedFile() *models.File {
|
||||
node := self.GetSelectedFileNode()
|
||||
node := self.GetSelected()
|
||||
if node == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -53,7 +53,7 @@ func (self *FileTreeViewModel) GetSelectedFile() *models.File {
|
||||
}
|
||||
|
||||
func (self *FileTreeViewModel) GetSelectedPath() string {
|
||||
node := self.GetSelectedFileNode()
|
||||
node := self.GetSelected()
|
||||
if node == nil {
|
||||
return ""
|
||||
}
|
||||
@@ -63,7 +63,7 @@ func (self *FileTreeViewModel) GetSelectedPath() string {
|
||||
|
||||
func (self *FileTreeViewModel) SetTree() {
|
||||
newFiles := self.GetAllFiles()
|
||||
selectedNode := self.GetSelectedFileNode()
|
||||
selectedNode := self.GetSelected()
|
||||
|
||||
// for when you stage the old file of a rename and the new file is in a collapsed dir
|
||||
for _, file := range newFiles {
|
||||
@@ -135,7 +135,7 @@ func (self *FileTreeViewModel) SetFilter(filter FileTreeDisplayFilter) {
|
||||
// If we're going from tree to flat and we have a file selected we want to select that.
|
||||
// If instead we've selected a directory we need to select the first file in that directory.
|
||||
func (self *FileTreeViewModel) ToggleShowTree() {
|
||||
selectedNode := self.GetSelectedFileNode()
|
||||
selectedNode := self.GetSelected()
|
||||
|
||||
self.IFileTree.ToggleShowTree()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user