1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2024-12-12 11:15:00 +02:00

Use DisabledReason when deleting branches is not possible

Two cases: trying to delete the currently checked-out branch, or deleting the
upstream of a branch that doesn't have one.
This commit is contained in:
Stefan Haller 2023-09-05 21:56:20 +02:00
parent 7f9818cfa2
commit 75aed98c35

View File

@ -468,7 +468,6 @@ func (self *BranchesController) forceDelete(branch *models.Branch) error {
}
func (self *BranchesController) delete(branch *models.Branch) error {
menuItems := []*types.MenuItem{}
checkedOutBranch := self.c.Helpers().Refs.GetCheckedOutRef()
localDeleteItem := &types.MenuItem{
@ -479,25 +478,18 @@ func (self *BranchesController) delete(branch *models.Branch) error {
},
}
if checkedOutBranch.Name == branch.Name {
localDeleteItem = &types.MenuItem{
Label: self.c.Tr.DeleteLocalBranch,
Key: 'c',
Tooltip: self.c.Tr.CantDeleteCheckOutBranch,
OnPress: func() error {
return self.c.ErrorMsg(self.c.Tr.CantDeleteCheckOutBranch)
},
}
localDeleteItem.DisabledReason = self.c.Tr.CantDeleteCheckOutBranch
}
menuItems = append(menuItems, localDeleteItem)
if branch.IsTrackingRemote() && !branch.UpstreamGone {
menuItems = append(menuItems, &types.MenuItem{
Label: self.c.Tr.DeleteRemoteBranch,
Key: 'r',
OnPress: func() error {
return self.remoteDelete(branch)
},
})
remoteDeleteItem := &types.MenuItem{
Label: self.c.Tr.DeleteRemoteBranch,
Key: 'r',
OnPress: func() error {
return self.remoteDelete(branch)
},
}
if !branch.IsTrackingRemote() || branch.UpstreamGone {
remoteDeleteItem.DisabledReason = self.c.Tr.UpstreamNotSetError
}
menuTitle := utils.ResolvePlaceholderString(
@ -509,7 +501,7 @@ func (self *BranchesController) delete(branch *models.Branch) error {
return self.c.Menu(types.CreateMenuOptions{
Title: menuTitle,
Items: menuItems,
Items: []*types.MenuItem{localDeleteItem, remoteDeleteItem},
})
}