feat(memoir): persist chapter reading prefs globally
Share font size, font family, and background across all memoir chapters via MemoirReadingSettingsProvider and SecureStore (same app-settings pattern). Add parse/merge helpers and unit tests. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -10,11 +10,18 @@ import { supportedLanguages, type AppLanguage } from '@/i18n/resources';
|
||||
|
||||
import { THEME_NAMES, type ThemeName } from '@/constants/theme-bridge';
|
||||
|
||||
import {
|
||||
mergeMemoirReadingPreferences,
|
||||
parseMemoirReadingPreferences,
|
||||
type MemoirReadingPreferences,
|
||||
} from './memoir-reading-settings';
|
||||
|
||||
const KEY_LANGUAGE = 'app_settings_language';
|
||||
const KEY_LARGE_TEXT = 'app_settings_large_text';
|
||||
const KEY_DARK_MODE = 'app_settings_dark_mode';
|
||||
const KEY_THEME_NAME = 'app_settings_theme_name';
|
||||
const KEY_TTS_SPEAK_DEFAULT = 'app_settings_tts_speak_default';
|
||||
const KEY_MEMOIR_READING = 'app_settings_memoir_reading';
|
||||
|
||||
const webFallback: Record<string, string> = {};
|
||||
|
||||
@@ -95,5 +102,20 @@ export async function setTtsSpeakDefault(value: boolean): Promise<void> {
|
||||
await setStored(KEY_TTS_SPEAK_DEFAULT, value ? 'true' : 'false');
|
||||
}
|
||||
|
||||
export async function getMemoirReadingPreferences(): Promise<MemoirReadingPreferences> {
|
||||
const raw = await getStored(KEY_MEMOIR_READING);
|
||||
return parseMemoirReadingPreferences(raw);
|
||||
}
|
||||
|
||||
export async function setMemoirReadingPreferences(
|
||||
patch: Partial<MemoirReadingPreferences>,
|
||||
): Promise<void> {
|
||||
const raw = await getStored(KEY_MEMOIR_READING);
|
||||
const current = parseMemoirReadingPreferences(raw);
|
||||
const next = mergeMemoirReadingPreferences(current, patch);
|
||||
await setStored(KEY_MEMOIR_READING, JSON.stringify(next));
|
||||
}
|
||||
|
||||
export { supportedLanguages, THEME_NAMES };
|
||||
export type { AppLanguage, ThemeName };
|
||||
export type { MemoirReadingPreferences } from './memoir-reading-settings';
|
||||
|
||||
Reference in New Issue
Block a user