diff --git a/src/lib/stores/preferences.svelte.ts b/src/lib/stores/preferences.svelte.ts index 05dd871..df513a6 100644 --- a/src/lib/stores/preferences.svelte.ts +++ b/src/lib/stores/preferences.svelte.ts @@ -14,18 +14,29 @@ const DEFAULT_PREFERENCES: Preferences = { }; let store: Store | null = null; +let loadPromise: Promise | null = null; export const preferences = $state({ ...DEFAULT_PREFERENCES }); export async function loadPreferences(): Promise { - store = await load('preferences.json', { autoSave: true }); - const savedDir = await store.get('outputDirectory'); - const savedCookie = await store.get('cookieSource'); - if (savedDir) preferences.outputDirectory = savedDir; - if (savedCookie) preferences.cookieSource = savedCookie; + if (loadPromise) { + await loadPromise; + return; + } + loadPromise = (async () => { + store = await load('preferences.json', { autoSave: true }); + const savedDir = await store.get('outputDirectory'); + const savedCookie = await store.get('cookieSource'); + if (savedDir) preferences.outputDirectory = savedDir; + if (savedCookie) preferences.cookieSource = savedCookie; + })(); + await loadPromise; } export async function savePreferences(): Promise { + if (!store) { + await loadPreferences(); + } if (!store) return; await store.set('outputDirectory', preferences.outputDirectory); await store.set('cookieSource', preferences.cookieSource);