import { createIndexedDBHelper, type IndexedDBHelper } from './helpers/indexedDBHelper' const DB_NAME = 'nostr_paywall_settings' const DB_VERSION = 3 const STORE_NAME = 'onboarding_preferences' export interface OnboardingPreferencesItem { key: 'completed' value: boolean timestamp: number } const COMPLETED_KEY = 'completed' class OnboardingPreferencesService { 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 isCompleted(): Promise { try { const result = await this.dbHelper.get(COMPLETED_KEY) return result?.value ?? false } catch (error) { console.error('Error loading onboarding preferences:', error) return false } } async markCompleted(): Promise { try { await this.dbHelper.put({ key: COMPLETED_KEY, value: true, timestamp: Date.now(), }) } catch (error) { console.error('Error saving onboarding preferences:', error) throw error } } async clear(): Promise { try { await this.dbHelper.delete(COMPLETED_KEY) } catch (error) { console.error('Error clearing onboarding preferences:', error) throw error } } } const onboardingPreferencesService = new OnboardingPreferencesService() export async function isOnboardingCompleted(): Promise { return onboardingPreferencesService.isCompleted() } export async function markOnboardingCompleted(): Promise { return onboardingPreferencesService.markCompleted() } export async function clearOnboardingPreferences(): Promise { return onboardingPreferencesService.clear() }