mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-04-23 12:18:51 +02:00
The rendering of remote branches is in no way dependent on the width of the view (or the screen mode). Unlike in the local branches view, we don't truncate long branch names here (because there's no more information after them). This is an error introduced in d5b4f7bb3e.
84 lines
2.2 KiB
Go
84 lines
2.2 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"
|
|
"github.com/samber/lo"
|
|
)
|
|
|
|
type RemoteBranchesContext struct {
|
|
*FilteredListViewModel[*models.RemoteBranch]
|
|
*ListContextTrait
|
|
*DynamicTitleBuilder
|
|
}
|
|
|
|
var (
|
|
_ types.IListContext = (*RemoteBranchesContext)(nil)
|
|
_ types.DiffableContext = (*RemoteBranchesContext)(nil)
|
|
)
|
|
|
|
func NewRemoteBranchesContext(
|
|
c *ContextCommon,
|
|
) *RemoteBranchesContext {
|
|
viewModel := NewFilteredListViewModel(
|
|
func() []*models.RemoteBranch { return c.Model().RemoteBranches },
|
|
func(remoteBranch *models.RemoteBranch) []string {
|
|
return []string{remoteBranch.Name}
|
|
},
|
|
)
|
|
|
|
getDisplayStrings := func(_ int, _ int) [][]string {
|
|
return presentation.GetRemoteBranchListDisplayStrings(viewModel.GetItems(), c.Modes().Diffing.Ref)
|
|
}
|
|
|
|
return &RemoteBranchesContext{
|
|
FilteredListViewModel: viewModel,
|
|
DynamicTitleBuilder: NewDynamicTitleBuilder(c.Tr.RemoteBranchesDynamicTitle),
|
|
ListContextTrait: &ListContextTrait{
|
|
Context: NewSimpleContext(NewBaseContext(NewBaseContextOpts{
|
|
View: c.Views().RemoteBranches,
|
|
WindowName: "branches",
|
|
Key: REMOTE_BRANCHES_CONTEXT_KEY,
|
|
Kind: types.SIDE_CONTEXT,
|
|
Focusable: true,
|
|
Transient: true,
|
|
NeedsRerenderOnHeightChange: true,
|
|
})),
|
|
ListRenderer: ListRenderer{
|
|
list: viewModel,
|
|
getDisplayStrings: getDisplayStrings,
|
|
},
|
|
c: c,
|
|
},
|
|
}
|
|
}
|
|
|
|
func (self *RemoteBranchesContext) GetSelectedRef() types.Ref {
|
|
remoteBranch := self.GetSelected()
|
|
if remoteBranch == nil {
|
|
return nil
|
|
}
|
|
return remoteBranch
|
|
}
|
|
|
|
func (self *RemoteBranchesContext) GetSelectedRefs() ([]types.Ref, int, int) {
|
|
items, startIdx, endIdx := self.GetSelectedItems()
|
|
|
|
refs := lo.Map(items, func(item *models.RemoteBranch, _ int) types.Ref {
|
|
return item
|
|
})
|
|
|
|
return refs, startIdx, endIdx
|
|
}
|
|
|
|
func (self *RemoteBranchesContext) GetDiffTerminals() []string {
|
|
itemId := self.GetSelectedItemId()
|
|
|
|
return []string{itemId}
|
|
}
|
|
|
|
func (self *RemoteBranchesContext) ShowBranchHeadsInSubCommits() bool {
|
|
return true
|
|
}
|