2022-01-02 13:12:19 +00:00
|
|
|
import { writable } from "svelte/store";
|
2022-01-09 14:29:51 +00:00
|
|
|
import type { Booru } from "./thirdeye";
|
2022-01-02 13:12:19 +00:00
|
|
|
|
2022-01-09 15:03:53 +00:00
|
|
|
export const localLoad = <T>(key: string, def: T) =>
|
2022-01-02 14:37:19 +00:00
|
|
|
('__pee__' + key) in localStorage
|
2022-01-08 07:29:19 +00:00
|
|
|
? JSON.parse(localStorage.getItem('__pee__' + key)!) as T
|
2022-01-02 13:12:19 +00:00
|
|
|
: def;
|
|
|
|
|
|
|
|
const localSet = (key: string, value: any) =>
|
|
|
|
localStorage.setItem('__pee__' + key, JSON.stringify(value));
|
|
|
|
|
2022-01-09 14:29:51 +00:00
|
|
|
export const settings = writable(localLoad('settingsv2', {
|
|
|
|
...localLoad('settings', {}),
|
2022-01-04 20:26:05 +00:00
|
|
|
loop: true,
|
2022-01-05 01:14:23 +00:00
|
|
|
dh: false,
|
2022-01-02 15:02:09 +00:00
|
|
|
xpv: false,
|
|
|
|
xpi: false,
|
2022-01-05 01:14:23 +00:00
|
|
|
te: false,
|
2022-01-05 19:12:12 +00:00
|
|
|
eye: false,
|
2022-01-07 04:43:28 +00:00
|
|
|
ca: false,
|
|
|
|
pre: false,
|
|
|
|
prev: false,
|
2022-01-08 07:29:19 +00:00
|
|
|
sh: false,
|
|
|
|
ep: false,
|
2022-01-12 04:18:50 +00:00
|
|
|
expte: false,
|
2022-01-12 08:09:30 +00:00
|
|
|
hotlink: false,
|
2022-01-13 07:38:50 +00:00
|
|
|
vercheck: false,
|
2022-01-12 04:18:50 +00:00
|
|
|
conc: 8,
|
2022-01-09 19:41:04 +00:00
|
|
|
ho: false,
|
2022-01-05 01:14:23 +00:00
|
|
|
blacklist: ['guro', 'scat', 'ryona', 'gore'],
|
2022-01-09 14:29:51 +00:00
|
|
|
rsources: [{
|
|
|
|
name: 'Gelbooru',
|
|
|
|
domain: 'gelbooru.com',
|
|
|
|
endpoint: '/index.php?page=dapi&s=post&q=index&json=1&tags=md5:',
|
|
|
|
view: "https://gelbooru.com/index.php?page=post&s=view&id="
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'Yandere',
|
|
|
|
domain: 'yande.re',
|
|
|
|
endpoint: '/post.json?tags=md5:',
|
|
|
|
view: `https://yande.re/post/show/`
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'Sankaku',
|
|
|
|
domain: 'capi-v2.sankakucomplex.com',
|
|
|
|
endpoint: '/posts/keyset?tags=md5:',
|
|
|
|
view: `https://chan.sankakucomplex.com/post/show/`
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'Rule34',
|
|
|
|
domain: 'api.rule34.xxx',
|
|
|
|
endpoint: '/index.php?page=dapi&s=post&q=index&json=1&tags=md5:',
|
|
|
|
// note: rule34 do not seem to give source in their API
|
|
|
|
view: "https://rule34.xxx/index.php?page=post&s=view&id="
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'Danbooru',
|
|
|
|
domain: 'danbooru.donmai.us',
|
|
|
|
endpoint: '/posts.json?tags=md5:',
|
|
|
|
view: 'https://danbooru.donmai.us/posts/'
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'Lolibooru',
|
|
|
|
domain: 'lolibooru.moe',
|
|
|
|
endpoint: '/post.json?tags=md5:',
|
|
|
|
view: 'https://lolibooru.moe/post/show/'
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "ATFbooru",
|
|
|
|
domain: "booru.allthefallen.moe",
|
|
|
|
endpoint: "/posts.json?tags=md5:",
|
|
|
|
view: 'https://booru.allthefallen.moe/posts/'
|
2022-01-12 04:18:50 +00:00
|
|
|
}] as (Omit<Booru, 'quirks'> & {view: string, disabled?: boolean})[],
|
|
|
|
...localLoad('settingsv2', {}),
|
2022-01-02 13:12:19 +00:00
|
|
|
}));
|
|
|
|
|
2022-01-07 04:43:28 +00:00
|
|
|
export const appState = writable({
|
2022-01-07 06:45:30 +00:00
|
|
|
isCatalog: false,
|
2022-01-08 22:08:20 +00:00
|
|
|
is4chanX: false,
|
2022-01-07 06:45:30 +00:00
|
|
|
foundPosts: [] as HTMLElement[]
|
2022-01-07 04:43:28 +00:00
|
|
|
});
|
|
|
|
|
2022-01-02 13:12:19 +00:00
|
|
|
settings.subscribe(newVal => {
|
2022-01-09 14:29:51 +00:00
|
|
|
localSet('settingsv2', newVal);
|
2022-01-02 13:12:19 +00:00
|
|
|
});
|