fix: guard preferences save against uninitialized store
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -14,18 +14,29 @@ const DEFAULT_PREFERENCES: Preferences = {
|
||||
};
|
||||
|
||||
let store: Store | null = null;
|
||||
let loadPromise: Promise<void> | null = null;
|
||||
|
||||
export const preferences = $state<Preferences>({ ...DEFAULT_PREFERENCES });
|
||||
|
||||
export async function loadPreferences(): Promise<void> {
|
||||
store = await load('preferences.json', { autoSave: true });
|
||||
const savedDir = await store.get<string>('outputDirectory');
|
||||
const savedCookie = await store.get<CookieSource>('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<string>('outputDirectory');
|
||||
const savedCookie = await store.get<CookieSource>('cookieSource');
|
||||
if (savedDir) preferences.outputDirectory = savedDir;
|
||||
if (savedCookie) preferences.cookieSource = savedCookie;
|
||||
})();
|
||||
await loadPromise;
|
||||
}
|
||||
|
||||
export async function savePreferences(): Promise<void> {
|
||||
if (!store) {
|
||||
await loadPreferences();
|
||||
}
|
||||
if (!store) return;
|
||||
await store.set('outputDirectory', preferences.outputDirectory);
|
||||
await store.set('cookieSource', preferences.cookieSource);
|
||||
|
||||
Reference in New Issue
Block a user