| 1 | import type { WorkspaceSessionSummary } from "../generated/desktopContract.generated"; |
| 2 | |
| 3 | export function sessionMetadataPending(row: WorkspaceSessionSummary): boolean { |
| 4 | return Boolean(row.metadataStatus && row.metadataStatus !== "ready" && row.metadataStatus !== "failed"); |
| 5 | } |
| 6 | |
| 7 | export function sessionIsBlank(row: WorkspaceSessionSummary): boolean { |
| 8 | return row.blank && !sessionMetadataPending(row) && row.metadataStatus !== "failed"; |
| 9 | } |
| 10 | |
| 11 | export function retainPreparedSessionLabels(next: WorkspaceSessionSummary[], previous: WorkspaceSessionSummary[]): WorkspaceSessionSummary[] { |
| 12 | const prior = new Map(previous.map(row => [row.ref.sessionId, row])); |
| 13 | return next.map(row => { |
| 14 | const old = prior.get(row.ref.sessionId); |
| 15 | return sessionMetadataPending(row) && old |
| 16 | ? { ...row, title: row.title || old.title, preview: row.preview || old.preview } |
| 17 | : row; |
| 18 | }); |
| 19 | } |
| 20 |