From c67f7d46412dd9cfeec324797c9e55309a2a8ce5 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Mon, 3 Oct 2022 12:03:36 -0700 Subject: lightning send improvements --- src/lib/socket.js | 1 - .../transactions/[...page]/+page.server.js | 2 +- src/routes/scan/+page.svelte | 8 +- src/routes/send/+page.server.js | 39 +++++++++ src/routes/send/+page.svelte | 95 +++++++++++++++------- src/routes/send/lightning/[payreq]/+page.svelte | 7 +- src/routes/sent/+page.svelte | 26 ++---- 7 files changed, 120 insertions(+), 58 deletions(-) create mode 100644 src/routes/send/+page.server.js (limited to 'src') diff --git a/src/lib/socket.js b/src/lib/socket.js index 7b1d72e5..ed3fa02e 100644 --- a/src/lib/socket.js +++ b/src/lib/socket.js @@ -27,7 +27,6 @@ export const messages = (data) => ({ if (data.amount > 0) { success(`Received ${data.amount} sats!`); } else { - console.log("DATA", JSON.stringify(data)) success(`Sent ${-data.amount} sats!`); } }, diff --git a/src/routes/[username]/transactions/[...page]/+page.server.js b/src/routes/[username]/transactions/[...page]/+page.server.js index 5b88c32b..faa8a1ab 100644 --- a/src/routes/[username]/transactions/[...page]/+page.server.js +++ b/src/routes/[username]/transactions/[...page]/+page.server.js @@ -2,7 +2,7 @@ import { get, auth } from '$lib/utils'; let offset = 25; -export async function load({ params, request }) { +export async function load({ cookies, params, request }) { let page = parseInt(params.page || 1); let transactions = await get('/payments', auth(cookies)); let total = transactions.length; diff --git a/src/routes/scan/+page.svelte b/src/routes/scan/+page.svelte index 0fba1c4a..9fff1949 100644 --- a/src/routes/scan/+page.svelte +++ b/src/routes/scan/+page.svelte @@ -16,6 +16,12 @@ -
+
+ +
+ +
diff --git a/src/routes/send/+page.server.js b/src/routes/send/+page.server.js new file mode 100644 index 00000000..837060f2 --- /dev/null +++ b/src/routes/send/+page.server.js @@ -0,0 +1,39 @@ +import validate from 'bitcoin-address-validation'; +import bip21 from 'bip21'; +import { get } from '$lib/utils'; +import { invalid, redirect } from "@sveltejs/kit"; + +export const actions = { + default: async ({ request }) => { + const values = await request.formData(); + const t = values.get('text'); + console.log('parsing', t); + if (!t) return; + + // lightning + if (t.startsWith('ln')) { + throw redirect(303, `/send/lightning/${t}`); + } + + // bitcoin + if (validate(t)) { + console.log('bitcoin'); + throw redirect(303, `/send/bitcoin/${t}`); + } + + // ln address + if (t.includes('@') && t.includes('.')) { + console.log('ln address'); + let [name, domain] = t.split('@'); + try { + let lnurl = await get(`/encode?domain=${domain}&name=${name}`); + console.log('lnurl', lnurl); + } catch (e) {} + } + + // user + console.log('username'); + + return invalid(403, { error: 'Failed to parse destination' }); + } +}; diff --git a/src/routes/send/+page.svelte b/src/routes/send/+page.svelte index 2162d76d..fdaa1db0 100644 --- a/src/routes/send/+page.svelte +++ b/src/routes/send/+page.svelte @@ -2,10 +2,17 @@ import { browser } from '$app/environment'; import { t } from '$lib/translations'; import { AppHeader, Icon, Spinner } from '$comp'; - import { back, focus } from '$lib/utils'; - import parse from '$lib/parse'; + import { back } from '$lib/utils'; - let text, loading; + export let form; + + let placeholder = 'Address, Invoice, Username'; + let text = placeholder, + loading; + + let focus = () => { + if (text === placeholder) text = ''; + }; let paste = async () => { text = await navigator.clipboard.readText(); @@ -16,46 +23,72 @@ -
-
+
+
+ -
- - - -
- -
-
- - {#if browser && navigator.clipboard} -
- -
- {/if} +
+ {text}
-
+
+ + + + + +
-
+ + + diff --git a/src/routes/send/lightning/[payreq]/+page.svelte b/src/routes/send/lightning/[payreq]/+page.svelte index 79fc1c44..47c6b763 100644 --- a/src/routes/send/lightning/[payreq]/+page.svelte +++ b/src/routes/send/lightning/[payreq]/+page.svelte @@ -4,12 +4,11 @@ import { back } from '$lib/utils'; export let data; - let { payreq } = $page.params; + let { payreq } = $page.params; + let { alias } = data; let { currency } = data.user; let amount, loading; - - console.log(data) +
-- cgit v1.2.3