From 23ffc5a6359dbc84a1de1da632412edeb9989b5f Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Wed, 2 Nov 2022 19:47:29 -0700 Subject: move to app layout --- src/routes/(app)/send/+layout.svelte | 18 ++++ src/routes/(app)/send/[...text]/+page.server.js | 60 ++++++++++++ src/routes/(app)/send/[...text]/+page.svelte | 94 +++++++++++++++++++ src/routes/(app)/send/[uuid=uuid]/+page.server.js | 28 ++++++ src/routes/(app)/send/[uuid=uuid]/+page.svelte | 101 ++++++++++++++++++++ .../(app)/send/bitcoin/[address]/+page.server.js | 16 ++++ .../(app)/send/bitcoin/[address]/+page.svelte | 58 ++++++++++++ .../(app)/send/lightning/[payreq]/+page.server.js | 27 ++++++ .../(app)/send/lightning/[payreq]/+page.svelte | 70 ++++++++++++++ src/routes/(app)/send/lnurl/+page.svelte | 0 .../user/[username]/[...amount]/+page.server.js | 29 ++++++ .../send/user/[username]/[...amount]/+page.svelte | 103 +++++++++++++++++++++ 12 files changed, 604 insertions(+) create mode 100644 src/routes/(app)/send/+layout.svelte create mode 100644 src/routes/(app)/send/[...text]/+page.server.js create mode 100644 src/routes/(app)/send/[...text]/+page.svelte create mode 100644 src/routes/(app)/send/[uuid=uuid]/+page.server.js create mode 100644 src/routes/(app)/send/[uuid=uuid]/+page.svelte create mode 100644 src/routes/(app)/send/bitcoin/[address]/+page.server.js create mode 100644 src/routes/(app)/send/bitcoin/[address]/+page.svelte create mode 100644 src/routes/(app)/send/lightning/[payreq]/+page.server.js create mode 100644 src/routes/(app)/send/lightning/[payreq]/+page.svelte create mode 100644 src/routes/(app)/send/lnurl/+page.svelte create mode 100644 src/routes/(app)/send/user/[username]/[...amount]/+page.server.js create mode 100644 src/routes/(app)/send/user/[username]/[...amount]/+page.svelte (limited to 'src/routes/(app)/send') diff --git a/src/routes/(app)/send/+layout.svelte b/src/routes/(app)/send/+layout.svelte new file mode 100644 index 00000000..c9122466 --- /dev/null +++ b/src/routes/(app)/send/+layout.svelte @@ -0,0 +1,18 @@ + + +{#if loaded && user.haspin && $pin?.length !== 6} + +{/if} + + diff --git a/src/routes/(app)/send/[...text]/+page.server.js b/src/routes/(app)/send/[...text]/+page.server.js new file mode 100644 index 00000000..b909ab4d --- /dev/null +++ b/src/routes/(app)/send/[...text]/+page.server.js @@ -0,0 +1,60 @@ +import validate from 'bitcoin-address-validation'; +import bip21 from 'bip21'; +import { get, post } from '$lib/utils'; +import { invalid, redirect } from '@sveltejs/kit'; + +let parse = async (t) => { + if (!t) return; + let user, uuid; + + // lightning + if (t.startsWith('ln')) { + try { + ({ uuid } = await get(`/invoice/${t}`)); + } catch (e) { + throw redirect(303, `/send/lightning/${t}`); + } + + if (uuid) throw redirect(303, `/send/${uuid}`); + } + + // bitcoin + if (validate(t)) { + try { + ({ uuid } = await get(`/invoice/${t}`)); + } catch (e) { + throw redirect(303, `/send/bitcoin/${t}`); + } + + if (uuid) throw redirect(303, `/send/${uuid}`); + } + + // 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 + 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: 'Does not compute, try again' }); + } +}; diff --git a/src/routes/(app)/send/[...text]/+page.svelte b/src/routes/(app)/send/[...text]/+page.svelte new file mode 100644 index 00000000..1311422e --- /dev/null +++ b/src/routes/(app)/send/[...text]/+page.svelte @@ -0,0 +1,94 @@ + + + + +

+ Send bitcoin or lightning +

+ +
+ {#if form?.error} +
+ {form.error} +
+ {/if} +
+ + + +