mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-07-01 00:54:58 +02:00
We're doing all the IO in our workers loader method so that we don't need to do any in our presentation code
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()
|
|
}
|