diff options
Diffstat (limited to 'src/routes/(app)/send/+layout.svelte')
| -rw-r--r-- | src/routes/(app)/send/+layout.svelte | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/routes/(app)/send/+layout.svelte b/src/routes/(app)/send/+layout.svelte index c9122466..2fb732e8 100644 --- a/src/routes/(app)/send/+layout.svelte +++ b/src/routes/(app)/send/+layout.svelte @@ -1,18 +1,38 @@ <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; let loaded; let { user } = data; - onMount(() => setTimeout(() => (loaded = true), 50)); + onMount(() => setTimeout(() => (loaded = true), 500)); + let cancel = () => goto(`/${user.username}`); + + $: browser && loaded && checkPin($pin); + let checkPin = async (p) => { + if (p?.length !== 6 || p === JSON.parse(sessionStorage.getItem('pin'))) return; + let result; + try { + result = await post('/pin', { pin: p }); + } catch (e) {} + + if (result) { + success('Pin confirmed'); + } else { + fail('Invalid pin'); + $pin = ''; + } + }; </script> {#if loaded && user.haspin && $pin?.length !== 6} - <Pin /> + <Pin bind:value={$pin} {cancel} /> {/if} <slot /> |
