diff options
| author | Adam Soltys <[email protected]> | 2023-01-25 23:01:55 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2023-01-25 23:01:55 -0800 |
| commit | f1b3efe88204ba203667a8dd67ac8ab598af1959 (patch) | |
| tree | 071975ffa4c30f81a7a25b78b4cfd5f85fdf7ea5 /src/routes/(app)/send | |
| parent | 2a18749cb9b08726dedf0cfb63971305e50a910a (diff) | |
| download | coinos-ui-f1b3efe88204ba203667a8dd67ac8ab598af1959.tar.gz coinos-ui-f1b3efe88204ba203667a8dd67ac8ab598af1959.zip | |
sveltekit 1.0
Diffstat (limited to 'src/routes/(app)/send')
7 files changed, 29 insertions, 21 deletions
diff --git a/src/routes/(app)/send/[...text]/+page.server.js b/src/routes/(app)/send/[...text]/+page.server.js index 3cc9f73d..8e5e02d7 100644 --- a/src/routes/(app)/send/[...text]/+page.server.js +++ b/src/routes/(app)/send/[...text]/+page.server.js @@ -1,7 +1,7 @@ import { validate } from 'bitcoin-address-validation'; import bip21 from 'bip21'; import { auth, get, post } from '$lib/utils'; -import { invalid, redirect } from '@sveltejs/kit'; +import { redirect } from '@sveltejs/kit'; let parse = async (t, host) => { if (!t) return; @@ -23,9 +23,7 @@ let parse = async (t, host) => { if (t.includes('/pot')) throw redirect(307, t.substring(t.indexOf('/pot'))); - console.log('LNURL?'); if (t.toLowerCase().startsWith('lnurl')) throw redirect(307, `/ln/${t}`); - console.log('NOPE'); if (t.includes(':')) t = t.split(':')[1]; // lightning diff --git a/src/routes/(app)/send/[uuid=uuid]/+page.server.js b/src/routes/(app)/send/[uuid=uuid]/+page.server.js index e9f161c7..7fa613bf 100644 --- a/src/routes/(app)/send/[uuid=uuid]/+page.server.js +++ b/src/routes/(app)/send/[uuid=uuid]/+page.server.js @@ -1,4 +1,4 @@ -import { error, invalid, redirect } from '@sveltejs/kit'; +import { error, fail, redirect } from '@sveltejs/kit'; import { btc as asset, auth, get, post } from '$lib/utils'; export async function load({ params, parent }) { @@ -17,12 +17,12 @@ export const actions = { let { confirmed } = body; if (!confirmed) { - return invalid(403, { amount, confirm: true }); + return fail(400, { amount, confirm: true }); } await post('/payments', body, auth(cookies)); } catch (e) { - return invalid(400, { message: e.message }); + return fail(400, { message: e.message }); } throw redirect(307, '/sent'); diff --git a/src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.server.js b/src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.server.js index 901d90a8..59e9326d 100644 --- a/src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.server.js +++ b/src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.server.js @@ -1,11 +1,17 @@ -import { invalid, redirect } from '@sveltejs/kit'; +import { fail, redirect } from '@sveltejs/kit'; import { auth, post } from '$lib/utils'; +let seen = {}; export const actions = { default: async ({ cookies, request }) => { try { let feeRate, subtract; - let { address, amount, pin } = Object.fromEntries(await request.formData()); + let { address, amount, pin, ts } = Object.fromEntries(await request.formData()); + + if (seen[ts]) return fail(400, { message: 'Duplicate form submission' }); + seen[ts] = 1; + setTimeout(() => delete seen[ts], 30000); + let { tx } = await post( '/bitcoin/fee', { address, amount, feeRate, subtract }, @@ -13,7 +19,7 @@ export const actions = { ); await post('/bitcoin/send', { pin, tx }, auth(cookies)); } catch (e) { - return invalid(400, { message: e.message }); + return fail(400, { message: e.message }); } throw redirect(307, '/sent'); diff --git a/src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.svelte b/src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.svelte index 2165e896..0da8ea10 100644 --- a/src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.svelte +++ b/src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.svelte @@ -11,9 +11,10 @@ let { address, amount } = $page.params; let { currency } = data.user; - let loading; + let loading, submit; + + let toggle = () => (loading = true); - let submit = () => (loading = true); $: update(form); let update = () => { if (form?.message.includes('pin')) $pin = undefined; @@ -36,17 +37,20 @@ <h1 class="text-3xl md:text-4xl font-semibold mb-2">{$t('payments.sendTo')}</h1> <p class="text-lg text-secondary">{address}</p> </div> - <Numpad bind:amount {currency} /> + <Numpad bind:amount {currency} {submit} /> - <form method="POST" use:enhance on:submit={submit}> + <form method="POST" use:enhance on:submit={toggle}> + <input name="ts" value={Date.now()} type="hidden" /> <input name="address" value={address} type="hidden" /> <input name="amount" value={amount} type="hidden" /> <input name="pin" value={$pin} type="hidden" /> <div class="flex w-full"> <button + bind:this={submit} type="submit" class="opacity-100 hover:opacity-80'} rounded-2xl border py-3 font-bold mx-auto mt-2 bg-black text-white px-4 w-24" + disabled={loading} > {#if loading} <Spinner /> diff --git a/src/routes/(app)/send/lightning/[payreq]/+page.server.js b/src/routes/(app)/send/lightning/[payreq]/+page.server.js index def7651c..21bc9c71 100644 --- a/src/routes/(app)/send/lightning/[payreq]/+page.server.js +++ b/src/routes/(app)/send/lightning/[payreq]/+page.server.js @@ -1,4 +1,4 @@ -import { invalid, redirect } from '@sveltejs/kit'; +import { fail, redirect } from '@sveltejs/kit'; import { btc as asset, auth, post } from '$lib/utils'; export async function load({ params }) { @@ -18,14 +18,14 @@ export const actions = { console.log('AMOUNT', amount); if (!confirmed) { - return invalid(403, { amount, confirm: true }); + return fail(400, { amount, confirm: true }); } await post('/payments', body, auth(cookies)); } catch (e) { if (e.message.includes('unusable')) e.message = 'Failed to route payment, try sending a lower amount'; - return invalid(400, { message: e.message }); + return fail(400, { message: e.message }); } throw redirect(307, '/sent'); diff --git a/src/routes/(app)/send/pot/[name]/[...amount]/+page.server.js b/src/routes/(app)/send/pot/[name]/[...amount]/+page.server.js index eadaa22e..0e1b7f5b 100644 --- a/src/routes/(app)/send/pot/[name]/[...amount]/+page.server.js +++ b/src/routes/(app)/send/pot/[name]/[...amount]/+page.server.js @@ -1,4 +1,4 @@ -import { invalid, redirect } from '@sveltejs/kit'; +import { fail, redirect } from '@sveltejs/kit'; import { auth, post } from '$lib/utils'; export const actions = { @@ -9,7 +9,7 @@ export const actions = { try { p = await post('/payments', body, auth(cookies)); } catch (e) { - return invalid(400, { message: e.message }); + return fail(400, { message: e.message }); } if (p) throw redirect(307, `/pot/${body.name}`); diff --git a/src/routes/(app)/send/user/[username]/[...amount]/+page.server.js b/src/routes/(app)/send/user/[username]/[...amount]/+page.server.js index 01712df2..46172175 100644 --- a/src/routes/(app)/send/user/[username]/[...amount]/+page.server.js +++ b/src/routes/(app)/send/user/[username]/[...amount]/+page.server.js @@ -1,4 +1,4 @@ -import { error, invalid, redirect } from '@sveltejs/kit'; +import { error, fail, redirect } from '@sveltejs/kit'; import { btc as asset, auth, get, post } from '$lib/utils'; export async function load({ params, parent }) { @@ -17,13 +17,13 @@ export const actions = { amount = parseInt(amount); if (!confirmed) { - return invalid(403, { amount, confirm: true }); + return fail(400, { amount, confirm: true }); } await post('/payments', body, auth(cookies)); } catch (e) { console.log(e); - return invalid(400, { message: e.message }); + return fail(400, { message: e.message }); } throw redirect(307, '/sent'); |
