| 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 |