설정 db 저장
This commit is contained in:
@@ -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 } });
|
||||
}
|
||||
@@ -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 };
|
||||
|
||||
Reference in New Issue
Block a user