mirror of
https://github.com/jesseduffield/lazygit.git
synced 2024-12-12 11:15:00 +02:00
06be88aef7
I would prefer to use methods to keep things immutable but I'd rather be consistent with the other models and update them all at once
56 lines
1.3 KiB
Go
56 lines
1.3 KiB
Go
package context
|
|
|
|
import (
|
|
"github.com/jesseduffield/lazygit/pkg/commands/models"
|
|
"github.com/jesseduffield/lazygit/pkg/gui/presentation"
|
|
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
|
)
|
|
|
|
type WorktreesContext struct {
|
|
*FilteredListViewModel[*models.Worktree]
|
|
*ListContextTrait
|
|
}
|
|
|
|
var _ types.IListContext = (*WorktreesContext)(nil)
|
|
|
|
func NewWorktreesContext(c *ContextCommon) *WorktreesContext {
|
|
viewModel := NewFilteredListViewModel(
|
|
func() []*models.Worktree { return c.Model().Worktrees },
|
|
func(Worktree *models.Worktree) []string {
|
|
return []string{Worktree.Name}
|
|
},
|
|
)
|
|
|
|
getDisplayStrings := func(startIdx int, length int) [][]string {
|
|
return presentation.GetWorktreeDisplayStrings(
|
|
c.Tr,
|
|
viewModel.GetFilteredList(),
|
|
)
|
|
}
|
|
|
|
return &WorktreesContext{
|
|
FilteredListViewModel: viewModel,
|
|
ListContextTrait: &ListContextTrait{
|
|
Context: NewSimpleContext(NewBaseContext(NewBaseContextOpts{
|
|
View: c.Views().Worktrees,
|
|
WindowName: "files",
|
|
Key: WORKTREES_CONTEXT_KEY,
|
|
Kind: types.SIDE_CONTEXT,
|
|
Focusable: true,
|
|
})),
|
|
list: viewModel,
|
|
getDisplayStrings: getDisplayStrings,
|
|
c: c,
|
|
},
|
|
}
|
|
}
|
|
|
|
func (self *WorktreesContext) GetSelectedItemId() string {
|
|
item := self.GetSelected()
|
|
if item == nil {
|
|
return ""
|
|
}
|
|
|
|
return item.ID()
|
|
}
|