diff options
| author | Fuwn <[email protected]> | 2026-03-01 16:20:51 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-03-01 16:21:02 -0800 |
| commit | eae5d24d9e79e59a19d4721caaeaa0ca650ecb33 (patch) | |
| tree | 1b685bb248e051dfa26d2bfdebe6689402dd93c5 /src/stores/stateBin.ts | |
| parent | chore(tooling): remove legacy eslint and prettier (diff) | |
| download | due.moe-eae5d24d9e79e59a19d4721caaeaa0ca650ecb33.tar.xz due.moe-eae5d24d9e79e59a19d4721caaeaa0ca650ecb33.zip | |
chore(biome): drop formatter style overrides
Diffstat (limited to 'src/stores/stateBin.ts')
| -rw-r--r-- | src/stores/stateBin.ts | 77 |
1 files changed, 39 insertions, 38 deletions
diff --git a/src/stores/stateBin.ts b/src/stores/stateBin.ts index f724860a..06d34bef 100644 --- a/src/stores/stateBin.ts +++ b/src/stores/stateBin.ts @@ -1,61 +1,62 @@ -import { browser } from '$app/environment'; -import { writable, get, type Writable } from 'svelte/store'; -import localforage from 'localforage'; +import { browser } from "$app/environment"; +import { writable, get, type Writable } from "svelte/store"; +import localforage from "localforage"; interface StateBin { - dueAnimeListOpen?: boolean; - upcomingAnimeListOpen?: boolean; - dueMangaListOpen?: boolean; - completedAnimeListOpen?: boolean; - completedMangaListOpen?: boolean; - [key: string]: boolean | string | undefined; + dueAnimeListOpen?: boolean; + upcomingAnimeListOpen?: boolean; + dueMangaListOpen?: boolean; + completedAnimeListOpen?: boolean; + completedMangaListOpen?: boolean; + [key: string]: boolean | string | undefined; } -const STORAGE_KEY = 'stateBin'; +const STORAGE_KEY = "stateBin"; const baseStore = writable<StateBin>({}); if (browser) { - localforage.getItem<StateBin>(STORAGE_KEY).then((value) => { - if (value && typeof value === 'object') baseStore.set(value); - }); + localforage.getItem<StateBin>(STORAGE_KEY).then((value) => { + if (value && typeof value === "object") baseStore.set(value); + }); - baseStore.subscribe((value) => { - localforage.setItem(STORAGE_KEY, value); - }); + baseStore.subscribe((value) => { + localforage.setItem(STORAGE_KEY, value); + }); } const createProxyStore = (store: Writable<StateBin>) => { - return new Proxy(store, { - get(target, prop: string) { - if (prop in target) return (target as unknown as Record<string, unknown>)[prop]; + return new Proxy(store, { + get(target, prop: string) { + if (prop in target) + return (target as unknown as Record<string, unknown>)[prop]; - const derivedKey = writable(get(store)[prop]); + const derivedKey = writable(get(store)[prop]); - derivedKey.subscribe((value) => { - const state = get(store); - const updatedState = { ...state }; + derivedKey.subscribe((value) => { + const state = get(store); + const updatedState = { ...state }; - if (value === null || value === undefined) delete updatedState[prop]; - else updatedState[prop] = value; + if (value === null || value === undefined) delete updatedState[prop]; + else updatedState[prop] = value; - store.set(updatedState); - }); + store.set(updatedState); + }); - return derivedKey; - }, + return derivedKey; + }, - set(_, prop: string, value) { - const state = get(store); - const updatedState = { ...state }; + set(_, prop: string, value) { + const state = get(store); + const updatedState = { ...state }; - if (value === null || value === undefined) delete updatedState[prop]; - else updatedState[prop] = value; + if (value === null || value === undefined) delete updatedState[prop]; + else updatedState[prop] = value; - store.set(updatedState); + store.set(updatedState); - return true; - } - }); + return true; + }, + }); }; const stateBin = createProxyStore(baseStore); |