From bf70219a4753d31a201ffc10e0c378a512adb721 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Thu, 6 Oct 2022 00:13:16 -0700 Subject: send route can take a parameter --- src/components/AppHeader.svelte | 3 - src/routes/+layout.svelte | 2 + src/routes/[username]/+page.svelte | 75 +++++++++------- src/routes/[username]/bitcoin/+page.server.js | 4 + src/routes/[username]/bitcoin/+page.svelte | 0 src/routes/[username]/settings/+page.svelte | 2 +- src/routes/[username]/settings/_account.svelte | 3 + .../[username]/transactions/[...page]/+page.svelte | 19 +++-- src/routes/scan/+page.svelte | 4 +- src/routes/send/+page.server.js | 47 ---------- src/routes/send/+page.svelte | 99 ---------------------- src/routes/send/[...text]/+page.server.js | 55 ++++++++++++ src/routes/send/[...text]/+page.svelte | 99 ++++++++++++++++++++++ src/routes/send/lightning/[payreq]/+page.svelte | 2 +- src/routes/send/user/[username]/+page.svelte | 2 +- 15 files changed, 226 insertions(+), 190 deletions(-) create mode 100644 src/routes/[username]/bitcoin/+page.server.js create mode 100644 src/routes/[username]/bitcoin/+page.svelte delete mode 100644 src/routes/send/+page.server.js delete mode 100644 src/routes/send/+page.svelte create mode 100644 src/routes/send/[...text]/+page.server.js create mode 100644 src/routes/send/[...text]/+page.svelte (limited to 'src') diff --git a/src/components/AppHeader.svelte b/src/components/AppHeader.svelte index a21c4ecd..94bd9b1a 100644 --- a/src/components/AppHeader.svelte +++ b/src/components/AppHeader.svelte @@ -13,9 +13,6 @@ $: update(data); let update = (data) => ({ subject, user } = data); - $: updateUser(user); - let updateUser = () => console.log('USER', user); - const menuButtons = [ { stringID: 'nav.dashboard', icon: 'dash', goto: 'dashboard' }, { stringID: 'nav.settings', icon: 'settings', goto: 'settings' }, diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index a07d2fb1..c86b0eb5 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -35,7 +35,9 @@ +
+
diff --git a/src/routes/send/[...text]/+page.server.js b/src/routes/send/[...text]/+page.server.js new file mode 100644 index 00000000..ec764882 --- /dev/null +++ b/src/routes/send/[...text]/+page.server.js @@ -0,0 +1,55 @@ +import validate from 'bitcoin-address-validation'; +import bip21 from 'bip21'; +import { get } from '$lib/utils'; +import { invalid, redirect } from '@sveltejs/kit'; + +let parse = async (t) => { + if (!t) return; + + // lightning + if (t.startsWith('ln')) { + throw redirect(303, `/send/lightning/${t}`); + } + + // bitcoin + if (validate(t)) { + let user; + try { + ({ user } = await get(`/invoice/${t}`)); + } catch (e) { + throw redirect(303, `/send/bitcoin/${t}`); + } + + if (user) throw redirect(303, `/send/user/${user.username}`); + } + + // ln address + if (t.includes('@') && t.includes('.')) { + let [name, domain] = t.split('@'); + try { + let lnurl = await get(`/encode?domain=${domain}&name=${name}`); + } catch (e) {} + } + + // user + let user; + try { + user = await get(`/users/${t}`); + } catch (e) {} + + if (user) throw redirect(303, `/send/user/${t}`); +}; + +export async function load({ params }) { + let { text } = params; + await parse(text); +} + +export const actions = { + default: async ({ request }) => { + const form = await request.formData(); + await parse(form.get('text')); + + return invalid(403, { error: 'Failed to recognize input' }); + } +}; diff --git a/src/routes/send/[...text]/+page.svelte b/src/routes/send/[...text]/+page.svelte new file mode 100644 index 00000000..5d6d123e --- /dev/null +++ b/src/routes/send/[...text]/+page.svelte @@ -0,0 +1,99 @@ + + + + +
+ {#if form?.error} +
+ {form.error} +
+ {/if} +
+ + + +
+ {text} +
+
+ +
+ + + + + + + +
+
+ + diff --git a/src/routes/send/lightning/[payreq]/+page.svelte b/src/routes/send/lightning/[payreq]/+page.svelte index 1b248af6..973550f6 100644 --- a/src/routes/send/lightning/[payreq]/+page.svelte +++ b/src/routes/send/lightning/[payreq]/+page.svelte @@ -23,7 +23,7 @@
{#if amount}
-

Sending

+

Send

{s(amount)} sats

diff --git a/src/routes/send/user/[username]/+page.svelte b/src/routes/send/user/[username]/+page.svelte index 1193696b..05908011 100644 --- a/src/routes/send/user/[username]/+page.svelte +++ b/src/routes/send/user/[username]/+page.svelte @@ -38,7 +38,7 @@
{#if amount}
-

Sending

+

Send

{fiat ? f(amountFiat, currency) : s(a)} {#if !fiat} -- cgit v1.2.3 From 97948ce65ec1ea90c17ef8813929cbd12b0c4bfc Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Thu, 6 Oct 2022 00:28:42 -0700 Subject: check for internal payments --- src/routes/send/[...text]/+page.server.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/routes/send/[...text]/+page.server.js b/src/routes/send/[...text]/+page.server.js index ec764882..471724e4 100644 --- a/src/routes/send/[...text]/+page.server.js +++ b/src/routes/send/[...text]/+page.server.js @@ -8,7 +8,14 @@ let parse = async (t) => { // lightning if (t.startsWith('ln')) { - throw redirect(303, `/send/lightning/${t}`); + let user; + try { + ({ user } = await get(`/invoice/${t}`)); + } catch (e) { + throw redirect(303, `/send/lightning/${t}`); + } + + if (user) throw redirect(303, `/send/user/${user.username}`); } // bitcoin @@ -41,8 +48,8 @@ let parse = async (t) => { }; export async function load({ params }) { - let { text } = params; - await parse(text); + let { text } = params; + await parse(text); } export const actions = { -- cgit v1.2.3