aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2023-04-17 23:03:59 -0700
committerAdam Soltys <[email protected]>2023-04-17 23:03:59 -0700
commit702e6ed3516be6dbd82afbffcb3eb4704a3e03b4 (patch)
tree273cada8ce346bf1e44207b081ecdbcb6b0ac63d
parentfae19aaf71cb2581011d3a0488566da441122b04 (diff)
downloadcoinos-ui-702e6ed3516be6dbd82afbffcb3eb4704a3e03b4.tar.gz
coinos-ui-702e6ed3516be6dbd82afbffcb3eb4704a3e03b4.zip
expire pin after 5 minutes
-rw-r--r--src/lib/store.js2
-rw-r--r--src/routes/(app)/+layout.svelte33
-rw-r--r--src/routes/(app)/[username]/settings/[...tab]/+page.svelte2
-rw-r--r--src/routes/(app)/send/+layout.svelte3
4 files changed, 27 insertions, 13 deletions
diff --git a/src/lib/store.js b/src/lib/store.js
index ce984b17..4e88c90c 100644
--- a/src/lib/store.js
+++ b/src/lib/store.js
@@ -46,7 +46,7 @@ export const newPayment = persistLocal('newPayment');
export const password = persistLocal('password');
export const passwordPrompt = writable();
export const payments = persistLocal('transactions', []);
-export const pin = persistSession('pin', undefined);
+export const pin = writable();
export const rate = writable();
export const request = writable();
export const requestRedirect = writable();
diff --git a/src/routes/(app)/+layout.svelte b/src/routes/(app)/+layout.svelte
index 33e953ee..891de9ac 100644
--- a/src/routes/(app)/+layout.svelte
+++ b/src/routes/(app)/+layout.svelte
@@ -2,7 +2,7 @@
import { SvelteToast } from '@zerodevx/svelte-toast';
import { onDestroy, onMount } from 'svelte';
import { close, connect, send } from '$lib/socket';
- import { last, invoice, request, passwordPrompt } from '$lib/store';
+ import { last, invoice, request, passwordPrompt, pin } from '$lib/store';
import { page } from '$app/stores';
import { browser } from '$app/environment';
import { goto } from '$app/navigation';
@@ -16,10 +16,10 @@
let { rate, user, subject, token, rates } = data;
- $: update(data);
- let update = (data) => {
- ({ rate, user, subject, token, rates } = data);
- }
+ $: update(data);
+ let update = (data) => {
+ ({ rate, user, subject, token, rates } = data);
+ };
onMount(() => {
let localStorageLocale = localStorage.getItem(localeLocalStorageKey);
@@ -29,13 +29,17 @@
if (lng) localStorage.setItem(localeLocalStorageKey, lng);
});
- browser && checkSocket();
+ if (browser) {
+ checkSocket();
+ expirePin();
+ }
});
$: browser && connect(token);
let lost,
- timer,
+ checkTimer,
+ expireTimer,
counter = 0;
let checkSocket = () => {
@@ -46,10 +50,21 @@
send('heartbeat', token);
counter = 0;
}
- timer = setTimeout(checkSocket, 1000);
+
+ checkTimer = setTimeout(checkSocket, 1000);
};
- onDestroy(() => browser && clearTimeout(timer));
+ let expirePin = () => {
+ $pin = null;
+ expireTimer = setTimeout(expirePin, 300000);
+ };
+
+ onDestroy(() => {
+ if (browser) {
+ clearTimeout(checkTimer);
+ clearTimeout(expireTimer);
+ }
+ });
</script>
{#if browser && $passwordPrompt}
diff --git a/src/routes/(app)/[username]/settings/[...tab]/+page.svelte b/src/routes/(app)/[username]/settings/[...tab]/+page.svelte
index 1b212abe..2bd465a7 100644
--- a/src/routes/(app)/[username]/settings/[...tab]/+page.svelte
+++ b/src/routes/(app)/[username]/settings/[...tab]/+page.svelte
@@ -33,6 +33,8 @@
$: form?.success && success('Settings saved!');
+ $: form?.message && fail(form.message);
+
$: if (form?.message?.startsWith('Pin')) {
fail('Wrong pin, try again');
$pin = '';
diff --git a/src/routes/(app)/send/+layout.svelte b/src/routes/(app)/send/+layout.svelte
index 6192cd40..47c11f1c 100644
--- a/src/routes/(app)/send/+layout.svelte
+++ b/src/routes/(app)/send/+layout.svelte
@@ -1,10 +1,7 @@
<script>
- import { browser } from '$app/environment';
import { goto } from '$app/navigation';
import { Pin } from '$comp';
import { pin } from '$lib/store';
- import { onMount } from 'svelte';
- import { success, fail, post } from '$lib/utils';
export let data;