aboutsummaryrefslogtreecommitdiff
path: root/src/stores
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-09-03 17:58:56 -0700
committerFuwn <[email protected]>2023-09-03 17:58:56 -0700
commit00a37d80baff59b57fec2bd475ab7de531580199 (patch)
tree4c487e8d02859924c1e0abbf45fcf979c0f45489 /src/stores
parentfix(manga): manga collection refresh (diff)
downloaddue.moe-00a37d80baff59b57fec2bd475ab7de531580199.tar.xz
due.moe-00a37d80baff59b57fec2bd475ab7de531580199.zip
feat(stores): settings store for all settings
Diffstat (limited to 'src/stores')
-rw-r--r--src/stores/closeAnimeByDefault.ts14
-rw-r--r--src/stores/closeMangaByDefault.ts14
-rw-r--r--src/stores/displayNotStarted.ts14
-rw-r--r--src/stores/displayUnresolved.ts14
-rw-r--r--src/stores/roundDownChapters.ts14
-rw-r--r--src/stores/settings.ts68
-rw-r--r--src/stores/sortByDifference.ts14
7 files changed, 68 insertions, 84 deletions
diff --git a/src/stores/closeAnimeByDefault.ts b/src/stores/closeAnimeByDefault.ts
deleted file mode 100644
index 481fabfd..00000000
--- a/src/stores/closeAnimeByDefault.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { browser } from '$app/environment';
-import { writable } from 'svelte/store';
-
-const closeAnimeByDefault = writable<string>(
- browser ? localStorage.getItem('closeAnimeByDefault') ?? 'false' : 'false'
-);
-
-closeAnimeByDefault.subscribe((value) => {
- if (browser) {
- localStorage.setItem('closeAnimeByDefault', value);
- }
-});
-
-export default closeAnimeByDefault;
diff --git a/src/stores/closeMangaByDefault.ts b/src/stores/closeMangaByDefault.ts
deleted file mode 100644
index b0b27537..00000000
--- a/src/stores/closeMangaByDefault.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { browser } from '$app/environment';
-import { writable } from 'svelte/store';
-
-const closeMangaByDefault = writable<string>(
- browser ? localStorage.getItem('closeMangaByDefault') ?? 'false' : 'false'
-);
-
-closeMangaByDefault.subscribe((value) => {
- if (browser) {
- localStorage.setItem('closeMangaByDefault', value);
- }
-});
-
-export default closeMangaByDefault;
diff --git a/src/stores/displayNotStarted.ts b/src/stores/displayNotStarted.ts
deleted file mode 100644
index f8c1c42a..00000000
--- a/src/stores/displayNotStarted.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { browser } from '$app/environment';
-import { writable } from 'svelte/store';
-
-const displayNotStarted = writable<string>(
- browser ? localStorage.getItem('displayNotStarted') ?? 'false' : 'false'
-);
-
-displayNotStarted.subscribe((value) => {
- if (browser) {
- localStorage.setItem('displayNotStarted', value);
- }
-});
-
-export default displayNotStarted;
diff --git a/src/stores/displayUnresolved.ts b/src/stores/displayUnresolved.ts
deleted file mode 100644
index 9b67925f..00000000
--- a/src/stores/displayUnresolved.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { browser } from '$app/environment';
-import { writable } from 'svelte/store';
-
-const displayUnresolved = writable<string>(
- browser ? localStorage.getItem('displayUnresolved') ?? 'false' : 'false'
-);
-
-displayUnresolved.subscribe((value) => {
- if (browser) {
- localStorage.setItem('displayUnresolved', value);
- }
-});
-
-export default displayUnresolved;
diff --git a/src/stores/roundDownChapters.ts b/src/stores/roundDownChapters.ts
deleted file mode 100644
index 8cbdbdc1..00000000
--- a/src/stores/roundDownChapters.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { browser } from '$app/environment';
-import { writable } from 'svelte/store';
-
-const roundDownChapters = writable<string>(
- browser ? localStorage.getItem('roundDownChapters') ?? 'true' : 'true'
-);
-
-roundDownChapters.subscribe((value) => {
- if (browser) {
- localStorage.setItem('roundDownChapters', value);
- }
-});
-
-export default roundDownChapters;
diff --git a/src/stores/settings.ts b/src/stores/settings.ts
new file mode 100644
index 00000000..30f1c34d
--- /dev/null
+++ b/src/stores/settings.ts
@@ -0,0 +1,68 @@
+import { browser } from '$app/environment';
+import { writable } from 'svelte/store';
+
+interface Settings {
+ // cacheMangaMinutes: number;
+ // cacheMinutes: number;
+ closeAnimeByDefault: boolean;
+ closeMangaByDefault: boolean;
+ displayNotStarted: boolean;
+ displayUnresolved: boolean;
+ roundDownChapters: boolean;
+ sortByDifference: boolean;
+}
+
+const defaultSettings: Settings = {
+ // cacheMangaMinutes: 60,
+ // cacheMinutes: 30,
+ closeAnimeByDefault: false,
+ closeMangaByDefault: false,
+ displayNotStarted: false,
+ displayUnresolved: false,
+ roundDownChapters: true,
+ sortByDifference: false
+};
+
+const createStore = () => {
+ const { subscribe, set, update } = writable<Settings>(defaultSettings);
+
+ return {
+ subscribe,
+ set,
+ update,
+ reset: () => set(defaultSettings),
+ get: () => {
+ const settings = JSON.parse(
+ browser
+ ? localStorage.getItem('settings') ?? JSON.stringify(defaultSettings)
+ : JSON.stringify(defaultSettings)
+ );
+ const keys = Object.keys(defaultSettings);
+ const settingsKeys = Object.keys(settings);
+
+ if (keys.length !== settingsKeys.length) {
+ return defaultSettings;
+ }
+
+ for (const key of keys) {
+ if (!settingsKeys.includes(key)) {
+ return defaultSettings;
+ }
+ }
+
+ return settings;
+ },
+ setKey: (key: keyof Settings, value: any) =>
+ update((settings) => ({ ...settings, [key]: value }))
+ };
+};
+
+const settings = createStore();
+
+settings.subscribe((value) => {
+ if (browser) {
+ localStorage.setItem('settings', JSON.stringify(value));
+ }
+});
+
+export default settings;
diff --git a/src/stores/sortByDifference.ts b/src/stores/sortByDifference.ts
deleted file mode 100644
index 1a26371e..00000000
--- a/src/stores/sortByDifference.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { browser } from '$app/environment';
-import { writable } from 'svelte/store';
-
-const sortByDifference = writable<string>(
- browser ? localStorage.getItem('sortByDifference') ?? 'true' : 'true'
-);
-
-sortByDifference.subscribe((value) => {
- if (browser) {
- localStorage.setItem('sortByDifference', value);
- }
-});
-
-export default sortByDifference;