返回 DeepSeek-Reasonix
processFoldPreference.ts
根目录 / desktop / frontend / src / lib / processFoldPreference.ts
1 import { applySessionExperience } from "./sessionExperience";
2
3 export type ProcessFoldPreference = "auto" | "expanded";
4
5 const PROCESS_FOLD_KEY = "reasonix-process-fold";
6 const PROCESS_FOLD_EVENT = "reasonix:process-fold";
7
8 export function getProcessFoldPreference(): ProcessFoldPreference {
9 if (typeof localStorage !== "undefined") {
10 const experience = localStorage.getItem("reasonix-session-experience");
11 if (experience === "deep") return "expanded";
12 if (experience === "standard") return "auto";
13 }
14 if (typeof localStorage === "undefined") return "auto";
15 const stored = localStorage.getItem(PROCESS_FOLD_KEY);
16 return stored === "expanded" ? "expanded" : "auto";
17 }
18
19 export function setProcessFoldPreference(pref: ProcessFoldPreference): void {
20 // Deprecated setter: keep the old event contract, but route persistence
21 // through the canonical two-state store so this API cannot create a third
22 // production state.
23 applySessionExperience(pref === "expanded" ? "deep" : "standard");
24 }
25
26 export function onProcessFoldPreferenceChange(cb: (pref: ProcessFoldPreference) => void): () => void {
27 const handler = (e: Event) => cb((e as CustomEvent).detail as ProcessFoldPreference);
28 window.addEventListener(PROCESS_FOLD_EVENT, handler);
29 return () => window.removeEventListener(PROCESS_FOLD_EVENT, handler);
30 }
31
31 lines TYPESCRIPT