返回 DeepSeek-Reasonix
workspaceSessionPresentation.ts
根目录 / desktop / frontend / src / lib / workspaceSessionPresentation.ts
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
20 lines TYPESCRIPT