feat: de-clutter navbar

fix: backup option not working
refactor: persistent writable stores

[deploy]
This commit is contained in:
2023-07-29 22:50:18 +02:00
parent 7d148d0c2c
commit 4cc9462655
16 changed files with 166 additions and 244 deletions

17
src/lib/storage.ts Normal file
View File

@@ -0,0 +1,17 @@
import type {Writable} from "svelte/store"
import {writable} from "svelte/store"
import {browser} from "$app/environment"
export function persistentWritable<T>(key: string, value: T, condition?: () => boolean): Writable<T> {
if (browser) {
const persistedValue = localStorage.getItem(key)
const store = persistedValue !== null ? writable(JSON.parse(persistedValue)) : writable(value)
store.subscribe(value => {
if (!condition || condition()) localStorage.setItem(key, JSON.stringify(value))
})
return store
} else {
return writable(value)
}
}