diff options
Diffstat (limited to 'src/lib/store.ts')
| -rw-r--r-- | src/lib/store.ts | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/lib/store.ts b/src/lib/store.ts new file mode 100644 index 00000000..71d4aa40 --- /dev/null +++ b/src/lib/store.ts @@ -0,0 +1,59 @@ +import { get, writable } from "svelte/store"; +import { browser } from "$app/environment"; + +let persistSession = (key, defaultValue) => { + let s = writable( + browser && + sessionStorage.getItem(key) && + sessionStorage.getItem(key) !== "undefined" + ? JSON.parse(sessionStorage.getItem(key)) + : defaultValue + ); + + s.subscribe((v) => { + browser && sessionStorage.setItem(key, JSON.stringify(v)); + }); + + return s; +}; + +let persistLocal = (key, defaultValue) => { + let s = writable( + browser && + localStorage.getItem(key) && + localStorage.getItem(key) !== "undefined" + ? JSON.parse(localStorage.getItem(key)) + : defaultValue + ); + + s.subscribe((v) => { + try { + browser && localStorage.setItem(key, JSON.stringify(v)); + } catch (e) { + console.log("problem setting key", v); + console.log(e); + } + }); + + return s; +}; + +export let avatar = writable(); +export let banner = writable(); +export let event = writable(); +export let events = writable({}); +export let installPrompt = writable(); +export let invoice = writable(); +export let last = writable(); +export let loginRedirect = writable(); +export let decrypted = persistLocal("decrypted", {}); +export let newPayment = persistLocal("newPayment"); +export let password = writable(); +export let passwordPrompt = writable(); +export let pin = persistLocal("pin"); +export let rate = writable(); +export let request = writable(); +export let requestRedirect = writable(); +export let token = persistSession("token"); +export let ndef = writable(); +export let showQr = persistLocal("showQr", true); |
