diff options
| author | Fuwn <[email protected]> | 2023-09-03 17:58:56 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-09-03 17:58:56 -0700 |
| commit | 00a37d80baff59b57fec2bd475ab7de531580199 (patch) | |
| tree | 4c487e8d02859924c1e0abbf45fcf979c0f45489 /src/stores | |
| parent | fix(manga): manga collection refresh (diff) | |
| download | due.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.ts | 14 | ||||
| -rw-r--r-- | src/stores/closeMangaByDefault.ts | 14 | ||||
| -rw-r--r-- | src/stores/displayNotStarted.ts | 14 | ||||
| -rw-r--r-- | src/stores/displayUnresolved.ts | 14 | ||||
| -rw-r--r-- | src/stores/roundDownChapters.ts | 14 | ||||
| -rw-r--r-- | src/stores/settings.ts | 68 | ||||
| -rw-r--r-- | src/stores/sortByDifference.ts | 14 |
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; |