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:
viljarb0
2026-02-19 10:25:13 +01:00
committed by GitHub
parent cdc7dad2ec
commit e528788522

View File

@@ -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
}
} else {
targetIssues = closedIssues
if len(targetIssues) == 0 && len(openIssues) > 0 {
// The closed list became empty; fall back to open/in-progress issues.
targetIssues = openIssues
m.focusedWindow = 0
}
} }
selectID := issues[newIndex].ID
m.issueDetail.SetIssue(issues[newIndex]) // Safety: if targetIssues is still empty here, just clear detail and return.
return m, tea.Sequence(setItemsCmd, closedSetCmd, func() tea.Msg { return selectIssueMsg{IssueID: selectID} }) 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 {