aboutsummaryrefslogtreecommitdiff
path: root/src/stores/stateBin.ts
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-03-01 16:20:51 -0800
committerFuwn <[email protected]>2026-03-01 16:21:02 -0800
commiteae5d24d9e79e59a19d4721caaeaa0ca650ecb33 (patch)
tree1b685bb248e051dfa26d2bfdebe6689402dd93c5 /src/stores/stateBin.ts
parentchore(tooling): remove legacy eslint and prettier (diff)
downloaddue.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.ts77
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);