import { createIndexedDBHelper, type IndexedDBHelper } from './helpers/indexedDBHelper' const DB_NAME = 'nostr_paywall_settings' const DB_VERSION = 3 const STORE_NAME = 'reading_mode_preferences' export interface ReadingModeSettings { maxWidth: 'narrow' | 'medium' | 'wide' | 'full' fontSize: 'small' | 'medium' | 'large' | 'xlarge' lineHeight: 'tight' | 'normal' | 'relaxed' } export interface ReadingModePreferencesItem { key: 'settings' value: ReadingModeSettings timestamp: number } const SETTINGS_KEY = 'settings' class ReadingModePreferencesService { private readonly dbHelper: IndexedDBHelper constructor() { this.dbHelper = createIndexedDBHelper({ dbName: DB_NAME, version: DB_VERSION, storeName: STORE_NAME, keyPath: 'key', indexes: [{ name: 'timestamp', keyPath: 'timestamp', unique: false }], }) } async getSettings(): Promise { try { const result = await this.dbHelper.get(SETTINGS_KEY) return result?.value ?? null } catch (error) { console.error('Error loading reading mode preferences:', error) return null } } async saveSettings(settings: ReadingModeSettings): Promise { try { await this.dbHelper.put({ key: SETTINGS_KEY, value: settings, timestamp: Date.now(), }) } catch (error) { console.error('Error saving reading mode preferences:', error) throw error } } async clearSettings(): Promise { try { await this.dbHelper.delete(SETTINGS_KEY) } catch (error) { console.error('Error clearing reading mode preferences:', error) throw error } } } const readingModePreferencesService = new ReadingModePreferencesService() export async function getReadingModeSettings(): Promise { return readingModePreferencesService.getSettings() } export async function saveReadingModeSettings(settings: ReadingModeSettings): Promise { return readingModePreferencesService.saveSettings(settings) } export async function clearReadingModeSettings(): Promise { return readingModePreferencesService.clearSettings() }