Files
DeviceManager/src/lib/storage.ts
Thea Schöbl 4cc9462655 feat: de-clutter navbar
fix: backup option not working
refactor: persistent writable stores

[deploy]
2023-07-29 22:50:18 +02:00

18 lines
581 B
TypeScript

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)
}
}