aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes/(app)/send
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2023-01-25 23:01:55 -0800
committerAdam Soltys <[email protected]>2023-01-25 23:01:55 -0800
commitf1b3efe88204ba203667a8dd67ac8ab598af1959 (patch)
tree071975ffa4c30f81a7a25b78b4cfd5f85fdf7ea5 /src/routes/(app)/send
parent2a18749cb9b08726dedf0cfb63971305e50a910a (diff)
downloadcoinos-ui-f1b3efe88204ba203667a8dd67ac8ab598af1959.tar.gz
coinos-ui-f1b3efe88204ba203667a8dd67ac8ab598af1959.zip
sveltekit 1.0
Diffstat (limited to 'src/routes/(app)/send')
-rw-r--r--src/routes/(app)/send/[...text]/+page.server.js4
-rw-r--r--src/routes/(app)/send/[uuid=uuid]/+page.server.js6
-rw-r--r--src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.server.js12
-rw-r--r--src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.svelte12
-rw-r--r--src/routes/(app)/send/lightning/[payreq]/+page.server.js6
-rw-r--r--src/routes/(app)/send/pot/[name]/[...amount]/+page.server.js4
-rw-r--r--src/routes/(app)/send/user/[username]/[...amount]/+page.server.js6
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');