aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/store.ts
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2024-08-30 18:52:00 -0700
committerAdam Soltys <[email protected]>2024-08-30 18:52:00 -0700
commit8346eb9e052d10abf4fb65b66838aaab47152e2a (patch)
tree0f5efabd144b720598441d9a638fd27d849628ff /src/lib/store.ts
parentcb2edf24e48a49417ed6ec4a386e566470ff046c (diff)
downloadcoinos-ui-8346eb9e052d10abf4fb65b66838aaab47152e2a.tar.gz
coinos-ui-8346eb9e052d10abf4fb65b66838aaab47152e2a.zip
typescript
Diffstat (limited to 'src/lib/store.ts')
-rw-r--r--src/lib/store.ts59
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);