Transcript Incremental Projection
Nucleic-Session: 0FFD007B-0696-4517-9429-129C7B0FD5AC Co-authored-by: Nucleic <[email protected]>
This commit is contained in:
@@ -11,9 +11,15 @@ struct SessionsView: View {
|
||||
private var grouped: [(title: String, rows: [WireSessionSummary])] {
|
||||
let pool = (showArchived ? store.sessions : store.liveSessions)
|
||||
.sorted(by: StatusStyle.attentionThenRecency)
|
||||
let needs = pool.filter { $0.status.needsYou($0.disposition) }
|
||||
let running = pool.filter { $0.status == .running || $0.status == .provisioning || $0.status == .idle }
|
||||
let done = pool.filter { !needs.contains($0) && !running.contains($0) }
|
||||
// One pass, first bucket wins — the old `done = pool.filter { !needs.contains($0) … }`
|
||||
// ran O(rows²) full-summary equality scans on every body evaluation.
|
||||
var needs: [WireSessionSummary] = [], running: [WireSessionSummary] = [], done: [WireSessionSummary] = []
|
||||
for summary in pool {
|
||||
if summary.status.needsYou(summary.disposition) { needs.append(summary) }
|
||||
else if summary.status == .running || summary.status == .provisioning || summary.status == .idle {
|
||||
running.append(summary)
|
||||
} else { done.append(summary) }
|
||||
}
|
||||
return [("Needs you", needs), ("Running", running), ("Done", done)].filter { !$0.rows.isEmpty }
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user