Can embed any file in a PNG/WebM/GIF/JPEG and upload it to a third-party host through 4chan
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

60 lines
1.5 KiB

import { writable } from "svelte/store";
import type { HydrusClient } from "./hydrus";
import type { Booru } from "./thirdeye";
export const localLoad = <T>(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<Booru, 'quirks'> & {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);
});