返回 DeepSeek-Reasonix
historyViewProjection.ts
根目录 / desktop / frontend / src / app-runtime / historyViewProjection.ts
1 import type { SessionMeta } from "../lib/types";
2
3 export type HistoryScopeFilter = { scope: "global" | "project"; workspaceRoot: string };
4 export type HistoryViewState =
5 | { kind: "history"; source: "scope"; filter: HistoryScopeFilter; sessions: SessionMeta[] }
6 | { kind: "history"; source: "all"; sessions: SessionMeta[] };
7 export function sessionsForScope(sessions: SessionMeta[], filter: HistoryScopeFilter): SessionMeta[] {
8 return filter.scope === "project"
9 ? sessions.filter(session => session.scope === "project" && session.workspaceRoot === filter.workspaceRoot)
10 : sessions.filter(session => (session.scope || "global") === "global");
11 }
12 export function refreshHistoryProjection(current: HistoryViewState | null, sessions: SessionMeta[]): HistoryViewState | null {
13 if (!current || current.kind !== "history") return current;
14 return { ...current, sessions: current.source === "scope" ? sessionsForScope(sessions, current.filter) : sessions };
15 }
16
16 lines TYPESCRIPT