설정 db 저장

This commit is contained in:
Macbook
2026-06-23 01:09:42 +09:00
parent 32be015b49
commit 2d465cfc26
14 changed files with 192 additions and 37 deletions
@@ -0,0 +1,16 @@
import { getUiPreferences, patchUiPreferences } from './uiPreferencesDb';
export type MagnetMode = 'off' | 'weak' | 'strong';
function normalizeMagnetMode(v: unknown): MagnetMode {
return v === 'weak' || v === 'strong' ? v : 'off';
}
/** DB ui_preferences.chart.magnetMode */
export function loadMagnetMode(): MagnetMode {
return normalizeMagnetMode(getUiPreferences().chart?.magnetMode);
}
export function saveMagnetMode(mode: MagnetMode): void {
patchUiPreferences({ chart: { magnetMode: mode } });
}
+10 -2
View File
@@ -8,7 +8,7 @@ function isTheme(v: unknown): v is Theme {
return typeof v === 'string' && (VALID as readonly string[]).includes(v);
}
/** 이 브라우저(기기)에 저장된 UI 테마. 계정·DB와 무관 */
/** 이 브라우저(기기)에 저장된 UI 테마 — 게스트·오프라인 폴백 */
export function loadLocalTheme(): Theme {
try {
const raw = localStorage.getItem(STORAGE_KEY);
@@ -27,7 +27,13 @@ export function saveLocalTheme(theme: Theme): void {
}
}
/** localStorage에 없을 때만 DB defaultTheme을 이 기기에 1회 복사 */
/** 로그인 사용자: DB defaultTheme 우선. 게스트: localStorage */
export function resolveThemeForSession(dbTheme: string | undefined, useAccountScope: boolean): Theme {
if (useAccountScope && isTheme(dbTheme)) return dbTheme;
return loadLocalTheme();
}
/** localStorage에 없을 때만 DB defaultTheme을 이 기기에 1회 복사 (게스트) */
export function migrateDbThemeToLocalIfNeeded(dbTheme: string | undefined): Theme {
try {
const existing = localStorage.getItem(STORAGE_KEY);
@@ -39,3 +45,5 @@ export function migrateDbThemeToLocalIfNeeded(dbTheme: string | undefined): Them
saveLocalTheme(theme);
return theme;
}
export { isTheme };