38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import { createDefaultViewerState } from "./state.js";
|
|
import { SettingsStore } from "../../app/settings/SettingsStore.js";
|
|
|
|
const VIEWER_PREFS_KEY = "mjr_viewer_prefs_v1";
|
|
|
|
export { createDefaultViewerState };
|
|
|
|
export function loadViewerPrefs(): Record<string, any> {
|
|
try {
|
|
const raw = SettingsStore.get(VIEWER_PREFS_KEY);
|
|
if (!raw) return {};
|
|
const parsed = JSON.parse(raw);
|
|
return parsed && typeof parsed === "object" ? parsed : {};
|
|
} catch {
|
|
return {};
|
|
}
|
|
}
|
|
|
|
export function saveViewerPrefs(state: Record<string, any>): void {
|
|
try {
|
|
if (!state) return;
|
|
const prefs = {
|
|
analysisMode: String(state.analysisMode || "none"),
|
|
loupeEnabled: !!state.loupeEnabled,
|
|
probeEnabled: !!state.probeEnabled,
|
|
hudEnabled: !!state.hudEnabled,
|
|
genInfoOpen: !!state.genInfoOpen,
|
|
audioVisualizerMode: String(state.audioVisualizerMode || "artistic"),
|
|
abWipePercent: Number.isFinite(Number(state._abWipePercent))
|
|
? Number(state._abWipePercent)
|
|
: 50,
|
|
};
|
|
SettingsStore.set(VIEWER_PREFS_KEY, JSON.stringify(prefs));
|
|
} catch (e: any) {
|
|
console.debug?.(e);
|
|
}
|
|
}
|