// ============================================================ // Storage — localStorage 封装 // 职责:会话配置持久化 // ============================================================ import type { SessionConfig, Theme } from "../types"; const CONFIG_KEY = "camtalk:config"; const THEME_KEY = "camtalk:theme"; const DEFAULT_CONFIG: SessionConfig = { ttsEnabled: true, detailLevel: "low", language: "zh-CN", }; /** 加载配置,无存储时返回默认值 */ export function loadConfig(): SessionConfig { try { const raw = localStorage.getItem(CONFIG_KEY); if (!raw) return DEFAULT_CONFIG; const parsed = JSON.parse(raw) as Partial; return { ...DEFAULT_CONFIG, ...parsed }; } catch { return DEFAULT_CONFIG; } } /** 保存配置到 localStorage */ export function saveConfig(config: SessionConfig): void { try { localStorage.setItem(CONFIG_KEY, JSON.stringify(config)); } catch { // localStorage 不可用时静默失败 } } /** 加载主题偏好 */ export function loadTheme(): Theme { try { const raw = localStorage.getItem(THEME_KEY); if (raw === "light" || raw === "dark") return raw; } catch { /* ignore */ } return "dark"; } /** 保存主题偏好 */ export function saveTheme(theme: Theme): void { try { localStorage.setItem(THEME_KEY, theme); } catch { /* ignore */ } }