feat: add preferences store with cookie source and output directory
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
43
src/lib/stores/preferences.svelte.ts
Normal file
43
src/lib/stores/preferences.svelte.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
import { load, Store } from '@tauri-apps/plugin-store';
|
||||
import type { CookieSource } from '$lib/bindings/dependencies';
|
||||
|
||||
export type { CookieSource };
|
||||
|
||||
export interface Preferences {
|
||||
outputDirectory: string;
|
||||
cookieSource: CookieSource;
|
||||
}
|
||||
|
||||
const DEFAULT_PREFERENCES: Preferences = {
|
||||
outputDirectory: '~/',
|
||||
cookieSource: { type: 'browser', browser: 'firefox' },
|
||||
};
|
||||
|
||||
let store: Store | 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;
|
||||
}
|
||||
|
||||
export async function savePreferences(): Promise<void> {
|
||||
if (!store) return;
|
||||
await store.set('outputDirectory', preferences.outputDirectory);
|
||||
await store.set('cookieSource', preferences.cookieSource);
|
||||
await store.save();
|
||||
}
|
||||
|
||||
export async function setOutputDirectory(dir: string): Promise<void> {
|
||||
preferences.outputDirectory = dir;
|
||||
await savePreferences();
|
||||
}
|
||||
|
||||
export async function setCookieSource(source: CookieSource): Promise<void> {
|
||||
preferences.cookieSource = source;
|
||||
await savePreferences();
|
||||
}
|
||||
Reference in New Issue
Block a user