import { writable } from "svelte/store"; import type { HydrusClient } from "./hydrus"; import type { Booru } from "./thirdeye"; export const localLoad = (key: string, def: T) => ('__pee__' + key) in localStorage ? JSON.parse(localStorage.getItem('__pee__' + key)!) as T : def; const localSet = (key: string, value: any) => localStorage.setItem('__pee__' + key, JSON.stringify(value)); export const initial_settings = localLoad('settingsv2', { ...localLoad('settings', {}), loop: true, dh: false, xpv: false, xpi: false, hyd: false, ak: '', auto_embed: 0, auto_tags: '', te: false, eye: false, ca: false, pre: false, prev: false, sh: false, ep: false, tm: false, dvc: false, expte: false, mdist: -1, phash: false, hotlink: false, vercheck: false, cache: undefined as (boolean | undefined), // meaning defaults to false, except on b4k fhost: 0, maxe: 5, conc: 8, ho: false, blacklist: ['guro', 'scat', 'ryona', 'gore'], rsources: [] as (Omit & {view: string, disabled?: boolean})[], ...localLoad('settingsv2', {}), }); export const settings = writable(initial_settings); export const appState = writable({ isCatalog: false, is4chanX: false, akValid: false, herror: '' as string | undefined, client: null as HydrusClient | null, foundPosts: [] as HTMLElement[] }); settings.subscribe(newVal => { localSet('settingsv2', newVal); });