aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/store.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/store.js')
-rw-r--r--src/lib/store.js14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/lib/store.js b/src/lib/store.js
index c64ad39f..3174a86c 100644
--- a/src/lib/store.js
+++ b/src/lib/store.js
@@ -1,20 +1,24 @@
import { get, writable } from 'svelte/store';
import { browser } from '$app/environment';
-// creates a Svelte store synced to sessionStorage with the given key and default value
-const persistSession = (key, defaultValue) => {
+const persistSession = (key, defaultValue, expiry) => {
+ if (expiry && browser && new Date() - expiry > sessionStorage.getItem(key + 'time')) {
+ sessionStorage.removeItem(key);
+ }
+
let s = writable(
browser && sessionStorage.getItem(key) && sessionStorage.getItem(key) !== 'undefined'
? JSON.parse(sessionStorage.getItem(key))
: defaultValue
);
+ expiry && browser && sessionStorage.setItem(key + 'time', Date.now());
+
s.subscribe((v) => browser && sessionStorage.setItem(key, JSON.stringify(v)));
return s;
};
-// creates a Svelte store synced to localStorage with the given key and default value
const persistLocal = (key, defaultValue) => {
let s = writable(
browser && localStorage.getItem(key) && localStorage.getItem(key) !== 'undefined'
@@ -27,8 +31,9 @@ const persistLocal = (key, defaultValue) => {
return s;
};
-export const redirect = writable();
+export const loginRedirect = writable();
export const rate = writable();
+export const user = writable();
export const selectedRate = writable();
export const token = persistSession('token');
export const invoices = writable({});
@@ -37,3 +42,4 @@ export const colorTheme = writable('from-primary to-gradient');
export const tempProfileFiles = writable();
export const avatarUpload = writable();
export const bannerUpload = writable();
+export const pin = persistSession('pin', undefined, 5 * 60 * 1000);