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 store: Store | null = null;
|
||||||
|
let loadPromise: Promise<void> | null = null;
|
||||||
|
|
||||||
export const preferences = $state<Preferences>({ ...DEFAULT_PREFERENCES });
|
export const preferences = $state<Preferences>({ ...DEFAULT_PREFERENCES });
|
||||||
|
|
||||||
export async function loadPreferences(): Promise<void> {
|
export async function loadPreferences(): Promise<void> {
|
||||||
store = await load('preferences.json', { autoSave: true });
|
if (loadPromise) {
|
||||||
const savedDir = await store.get<string>('outputDirectory');
|
await loadPromise;
|
||||||
const savedCookie = await store.get<CookieSource>('cookieSource');
|
return;
|
||||||
if (savedDir) preferences.outputDirectory = savedDir;
|
}
|
||||||
if (savedCookie) preferences.cookieSource = savedCookie;
|
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> {
|
export async function savePreferences(): Promise<void> {
|
||||||
|
if (!store) {
|
||||||
|
await loadPreferences();
|
||||||
|
}
|
||||||
if (!store) return;
|
if (!store) return;
|
||||||
await store.set('outputDirectory', preferences.outputDirectory);
|
await store.set('outputDirectory', preferences.outputDirectory);
|
||||||
await store.set('cookieSource', preferences.cookieSource);
|
await store.set('cookieSource', preferences.cookieSource);
|
||||||
|
|||||||
Reference in New Issue
Block a user