Files
gui-video-clipper/src/lib/stores/preferences.svelte.ts

44 lines
1.3 KiB
TypeScript
Raw Normal View History

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();
}