aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes/send/+page.server.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes/send/+page.server.js')
-rw-r--r--src/routes/send/+page.server.js39
1 files changed, 39 insertions, 0 deletions
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' });
+ }
+};