Update pkg/tui/views/dashboard/operations.go
copilot suggestion: determine which list the deleted issue was in and use the appropriate filtered list to select the next issue Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -189,19 +189,49 @@ func (m *Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return m, nil
|
return m, nil
|
||||||
}
|
}
|
||||||
setItemsCmd := m.issueList.SetIssues(OpenAndInProgressOnly(issues))
|
openIssues := OpenAndInProgressOnly(issues)
|
||||||
closedSetCmd := m.closedIssueList.SetIssues(ClosedOnly(issues))
|
closedIssues := ClosedOnly(issues)
|
||||||
if len(issues) == 0 {
|
setItemsCmd := m.issueList.SetIssues(openIssues)
|
||||||
|
closedSetCmd := m.closedIssueList.SetIssues(closedIssues)
|
||||||
|
// If there are no issues at all, clear the detail view and return.
|
||||||
|
if len(openIssues) == 0 && len(closedIssues) == 0 {
|
||||||
m.issueDetail.SetIssue(models.Issue{})
|
m.issueDetail.SetIssue(models.Issue{})
|
||||||
return m, tea.Sequence(setItemsCmd, closedSetCmd)
|
return m, tea.Sequence(setItemsCmd, closedSetCmd)
|
||||||
}
|
}
|
||||||
newIndex := msg.PreviousIndex
|
|
||||||
if newIndex >= len(issues) {
|
// Determine which list to use for the next selection.
|
||||||
newIndex = len(issues) - 1
|
var targetIssues []models.Issue
|
||||||
|
if m.focusedWindow == 0 {
|
||||||
|
targetIssues = openIssues
|
||||||
|
if len(targetIssues) == 0 && len(closedIssues) > 0 {
|
||||||
|
// The open list became empty; fall back to closed issues.
|
||||||
|
targetIssues = closedIssues
|
||||||
|
m.focusedWindow = 1
|
||||||
}
|
}
|
||||||
selectID := issues[newIndex].ID
|
} else {
|
||||||
m.issueDetail.SetIssue(issues[newIndex])
|
targetIssues = closedIssues
|
||||||
return m, tea.Sequence(setItemsCmd, closedSetCmd, func() tea.Msg { return selectIssueMsg{IssueID: selectID} })
|
if len(targetIssues) == 0 && len(openIssues) > 0 {
|
||||||
|
// The closed list became empty; fall back to open/in-progress issues.
|
||||||
|
targetIssues = openIssues
|
||||||
|
m.focusedWindow = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Safety: if targetIssues is still empty here, just clear detail and return.
|
||||||
|
if len(targetIssues) == 0 {
|
||||||
|
m.issueDetail.SetIssue(models.Issue{})
|
||||||
|
return m, tea.Sequence(setItemsCmd, closedSetCmd)
|
||||||
|
}
|
||||||
|
|
||||||
|
newIndex := msg.PreviousIndex
|
||||||
|
if newIndex >= len(targetIssues) {
|
||||||
|
newIndex = len(targetIssues) - 1
|
||||||
|
}
|
||||||
|
selectedIssue := targetIssues[newIndex]
|
||||||
|
m.issueDetail.SetIssue(selectedIssue)
|
||||||
|
return m, tea.Sequence(setItemsCmd, closedSetCmd, func() tea.Msg {
|
||||||
|
return selectIssueMsg{IssueID: selectedIssue.ID}
|
||||||
|
})
|
||||||
|
|
||||||
case tea.KeyMsg:
|
case tea.KeyMsg:
|
||||||
if m.confirmingDelete {
|
if m.confirmingDelete {
|
||||||
|
|||||||
Reference in New Issue
Block a user