From 67c4af186fec0423664b18847921eb9696a1eeef Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Wed, 18 Jan 2023 19:44:27 -0800 Subject: pots --- src/components/Event.svelte | 10 +- src/components/Feed.svelte | 4 +- src/components/RegisterOrLogin.svelte | 4 +- src/lib/invoice.js | 8 +- src/lib/socket.js | 5 +- src/locales/en.json | 8 +- src/routes/(app)/+layout.server.js | 4 +- .../(profile)/event/[id]/+page.server.js | 3 +- .../[username]/(profile)/event/[id]/+page.svelte | 6 +- src/routes/(app)/[username]/dashboard/+page.svelte | 2 +- .../[username]/payments/[...page]/+page.svelte | 4 +- src/routes/(app)/invoice/+server.js | 5 + src/routes/(app)/invoice/[hash]/+layout.server.js | 19 ++ src/routes/(app)/invoice/[hash]/+layout.svelte | 1 + src/routes/(app)/invoice/[hash]/+page.server.js | 5 + src/routes/(app)/invoice/[hash]/+page.svelte | 158 +++++++++++++ src/routes/(app)/invoice/[hash]/paid/+page.svelte | 62 +++++ .../(app)/invoice/[hash]/tip/+page.server.js | 11 + src/routes/(app)/invoice/[hash]/tip/+page.svelte | 252 +++++++++++++++++++++ src/routes/(app)/invoice/[id]/+layout.server.js | 19 -- src/routes/(app)/invoice/[id]/+layout.svelte | 1 - src/routes/(app)/invoice/[id]/+page.server.js | 5 - src/routes/(app)/invoice/[id]/+page.svelte | 158 ------------- src/routes/(app)/invoice/[id]/paid/+page.svelte | 62 ----- src/routes/(app)/invoice/[id]/tip/+page.server.js | 11 - src/routes/(app)/invoice/[id]/tip/+page.svelte | 252 --------------------- src/routes/(app)/login/+page.server.js | 2 +- src/routes/(app)/password/+server.js | 2 +- src/routes/(app)/pot/[name]/+page.server.js | 23 ++ src/routes/(app)/pot/[name]/+page.svelte | 96 ++++++++ .../(app)/pot/[name]/withdraw/+page.server.js | 21 ++ src/routes/(app)/pot/[name]/withdraw/+page.svelte | 55 +++++ src/routes/(app)/register/+page.server.js | 6 +- src/routes/(app)/send/[...text]/+page.server.js | 6 +- .../send/pot/[name]/[...amount]/+page.server.js | 17 ++ .../(app)/send/pot/[name]/[...amount]/+page.svelte | 55 +++++ .../user/[username]/[...amount]/+page.server.js | 2 + .../send/user/[username]/[...amount]/+page.svelte | 18 +- src/routes/(app)/send/voucher/+page.server.js | 16 -- src/routes/(app)/send/voucher/+page.svelte | 54 ----- src/routes/(app)/sent/+page.server.js | 6 +- src/routes/(app)/sent/+page.svelte | 2 +- src/routes/(app)/tx/[id]/+page.server.js | 2 +- src/routes/(app)/tx/[id]/+page.svelte | 28 +-- .../(app)/voucher/[redeemcode]/+page.server.js | 24 -- src/routes/(app)/voucher/[redeemcode]/+page.svelte | 77 ------- 46 files changed, 853 insertions(+), 738 deletions(-) create mode 100644 src/routes/(app)/invoice/+server.js create mode 100644 src/routes/(app)/invoice/[hash]/+layout.server.js create mode 100644 src/routes/(app)/invoice/[hash]/+layout.svelte create mode 100644 src/routes/(app)/invoice/[hash]/+page.server.js create mode 100644 src/routes/(app)/invoice/[hash]/+page.svelte create mode 100644 src/routes/(app)/invoice/[hash]/paid/+page.svelte create mode 100644 src/routes/(app)/invoice/[hash]/tip/+page.server.js create mode 100644 src/routes/(app)/invoice/[hash]/tip/+page.svelte delete mode 100644 src/routes/(app)/invoice/[id]/+layout.server.js delete mode 100644 src/routes/(app)/invoice/[id]/+layout.svelte delete mode 100644 src/routes/(app)/invoice/[id]/+page.server.js delete mode 100644 src/routes/(app)/invoice/[id]/+page.svelte delete mode 100644 src/routes/(app)/invoice/[id]/paid/+page.svelte delete mode 100644 src/routes/(app)/invoice/[id]/tip/+page.server.js delete mode 100644 src/routes/(app)/invoice/[id]/tip/+page.svelte create mode 100644 src/routes/(app)/pot/[name]/+page.server.js create mode 100644 src/routes/(app)/pot/[name]/+page.svelte create mode 100644 src/routes/(app)/pot/[name]/withdraw/+page.server.js create mode 100644 src/routes/(app)/pot/[name]/withdraw/+page.svelte create mode 100644 src/routes/(app)/send/pot/[name]/[...amount]/+page.server.js create mode 100644 src/routes/(app)/send/pot/[name]/[...amount]/+page.svelte delete mode 100644 src/routes/(app)/send/voucher/+page.server.js delete mode 100644 src/routes/(app)/send/voucher/+page.svelte delete mode 100644 src/routes/(app)/voucher/[redeemcode]/+page.server.js delete mode 100644 src/routes/(app)/voucher/[redeemcode]/+page.svelte (limited to 'src') diff --git a/src/components/Event.svelte b/src/components/Event.svelte index 704a0636..68f44589 100644 --- a/src/components/Event.svelte +++ b/src/components/Event.svelte @@ -1,8 +1,8 @@ diff --git a/src/routes/(app)/[username]/dashboard/+page.svelte b/src/routes/(app)/[username]/dashboard/+page.svelte index 3779ab2f..314e3577 100644 --- a/src/routes/(app)/[username]/dashboard/+page.svelte +++ b/src/routes/(app)/[username]/dashboard/+page.svelte @@ -121,7 +121,7 @@ - + diff --git a/src/routes/(app)/[username]/payments/[...page]/+page.svelte b/src/routes/(app)/[username]/payments/[...page]/+page.svelte index 4348eb72..e37b3221 100644 --- a/src/routes/(app)/[username]/payments/[...page]/+page.svelte +++ b/src/routes/(app)/[username]/payments/[...page]/+page.svelte @@ -163,10 +163,10 @@
- {format(new Date(tx.created_at), 'h:mm aaa')} + {format(new Date(tx.created), 'h:mm aaa')}
- {format(new Date(tx.created_at), 'MMM d')} + {format(new Date(tx.created), 'MMM d')}
diff --git a/src/routes/(app)/invoice/+server.js b/src/routes/(app)/invoice/+server.js new file mode 100644 index 00000000..1321739e --- /dev/null +++ b/src/routes/(app)/invoice/+server.js @@ -0,0 +1,5 @@ +import { auth, post } from '$lib/utils'; +import { json } from '@sveltejs/kit'; + +export let POST = async ({ cookies: c, request: r }) => + json(await post('/invoice', await r.json(), auth(c))); diff --git a/src/routes/(app)/invoice/[hash]/+layout.server.js b/src/routes/(app)/invoice/[hash]/+layout.server.js new file mode 100644 index 00000000..61a479ab --- /dev/null +++ b/src/routes/(app)/invoice/[hash]/+layout.server.js @@ -0,0 +1,19 @@ +import Qr from 'qrcode-base64'; +import { get } from '$lib/utils'; +import { redirect } from '@sveltejs/kit'; + +export async function load({ depends, params, url }) { + depends('app:invoice'); + + let { hash } = params; + let invoice = await get(`/invoice?hash=${hash}`); + let { amount, received } = invoice; + amount = parseInt(amount); + + let paid = (!amount && received) || (amount > 0 && received >= amount); + if (paid && !url.pathname.endsWith('paid')) throw redirect(307, `/invoice/${hash}/paid`); + + let sm = Qr.drawImg(invoice.text, { size: 300 }); + + return { hash, invoice, sm, lg: sm }; +} diff --git a/src/routes/(app)/invoice/[hash]/+layout.svelte b/src/routes/(app)/invoice/[hash]/+layout.svelte new file mode 100644 index 00000000..4fa864ce --- /dev/null +++ b/src/routes/(app)/invoice/[hash]/+layout.svelte @@ -0,0 +1 @@ + diff --git a/src/routes/(app)/invoice/[hash]/+page.server.js b/src/routes/(app)/invoice/[hash]/+page.server.js new file mode 100644 index 00000000..1068f273 --- /dev/null +++ b/src/routes/(app)/invoice/[hash]/+page.server.js @@ -0,0 +1,5 @@ +import invoice from '$lib/invoice'; + +export const actions = { + default: invoice +}; diff --git a/src/routes/(app)/invoice/[hash]/+page.svelte b/src/routes/(app)/invoice/[hash]/+page.svelte new file mode 100644 index 00000000..28ff27c0 --- /dev/null +++ b/src/routes/(app)/invoice/[hash]/+page.svelte @@ -0,0 +1,158 @@ + + + + +
+
+ +
+ +
+ +
+ + {#if address} +
{address}
+ {/if} + +
+ + + {#if user && user.username !== username} + + + + {/if} +
+ +
+ {#if invoice.tip} +
+ {$t('invoice.invoice')} + + {f(amountFiat, currency)} + {`${sat(amount)}`} + +
+ +
+ {$t('invoice.tip')} + {f(tipAmount, currency)} + {`${sat(tip)}`} + +
+ {/if} + + {#if amount > 0} +
+ {$t('invoice.total')} + {f(amountFiat + parseFloat(tipAmount), currency)} + {`${sat(tip + amount)}`} +
+ {/if} +
+
+ + diff --git a/src/routes/(app)/invoice/[hash]/paid/+page.svelte b/src/routes/(app)/invoice/[hash]/paid/+page.svelte new file mode 100644 index 00000000..2ccbc971 --- /dev/null +++ b/src/routes/(app)/invoice/[hash]/paid/+page.svelte @@ -0,0 +1,62 @@ + + +
+
+ +
+ {#if received} +

{$t('invoice.paymentSuccessful')}

+

+ {f(amountFiat, currency)} + {#if tip} + + {f(tipFiat, currency)} + {/if} +

+

+ {sat(received - tip)} + {#if tip} + +{sat(tip)} + {/if} +

+ {/if} + + {#if pending} +

Payment detected

+

+ {f(pendingFiat, currency)} + {#if tip} + + {f(tipFiat, currency)} + {/if} +

+

+ {sat(pending - tip)} + {#if tip} + +{sat(tip)} + {/if} +

+ {/if} +
+ + +
+ + +
{$t('payments.tapAnywhere')}
diff --git a/src/routes/(app)/invoice/[hash]/tip/+page.server.js b/src/routes/(app)/invoice/[hash]/tip/+page.server.js new file mode 100644 index 00000000..c78e5020 --- /dev/null +++ b/src/routes/(app)/invoice/[hash]/tip/+page.server.js @@ -0,0 +1,11 @@ +import invoice from '$lib/invoice'; +import { redirect } from '@sveltejs/kit'; + +export async function load({ parent }) { + let { invoice } = await parent(); + if (!invoice.amount) throw redirect(307, `/invoice/${invoice.id}`); +} + +export const actions = { + default: invoice +}; diff --git a/src/routes/(app)/invoice/[hash]/tip/+page.svelte b/src/routes/(app)/invoice/[hash]/tip/+page.svelte new file mode 100644 index 00000000..308720ab --- /dev/null +++ b/src/routes/(app)/invoice/[hash]/tip/+page.svelte @@ -0,0 +1,252 @@ + + + + +
+
+ + + + + + + + +

{$t('invoice.addTipq')}

+ {#if !showCustomAmount} +
{Math.round(tipPercent)}%
+ + + +
+
+ + {f(amountFiat, currency)} + +{f(tipAmount, currency)} + +
+ +
+ {sat(amount)} + +{sat(tip)} +
+
+ + {#if tip} +
+ + +
+ {:else} + {#each tipAmounts as amount} + + {/each} + {/if} + +
+ +
+ {/if} + +
+
+ + {/if} +
+ + diff --git a/src/routes/(app)/invoice/[id]/+layout.server.js b/src/routes/(app)/invoice/[id]/+layout.server.js deleted file mode 100644 index 78d8481e..00000000 --- a/src/routes/(app)/invoice/[id]/+layout.server.js +++ /dev/null @@ -1,19 +0,0 @@ -import Qr from 'qrcode-base64'; -import { get } from '$lib/utils'; -import { redirect } from '@sveltejs/kit'; - -export async function load({ depends, params, url }) { - depends('app:invoice'); - - let { id } = params; - let invoice = await get(`/invoice?id=${id}`); - let { amount, received } = invoice; - amount = parseInt(amount); - - let paid = (!amount && received) || (amount > 0 && received >= amount); - if (paid && !url.pathname.endsWith('paid')) throw redirect(307, `/invoice/${id}/paid`); - - let sm = Qr.drawImg(invoice.text, { size: 300 }); - - return { id, invoice, sm, lg: sm }; -} diff --git a/src/routes/(app)/invoice/[id]/+layout.svelte b/src/routes/(app)/invoice/[id]/+layout.svelte deleted file mode 100644 index 4fa864ce..00000000 --- a/src/routes/(app)/invoice/[id]/+layout.svelte +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/routes/(app)/invoice/[id]/+page.server.js b/src/routes/(app)/invoice/[id]/+page.server.js deleted file mode 100644 index 1068f273..00000000 --- a/src/routes/(app)/invoice/[id]/+page.server.js +++ /dev/null @@ -1,5 +0,0 @@ -import invoice from '$lib/invoice'; - -export const actions = { - default: invoice -}; diff --git a/src/routes/(app)/invoice/[id]/+page.svelte b/src/routes/(app)/invoice/[id]/+page.svelte deleted file mode 100644 index 28ff27c0..00000000 --- a/src/routes/(app)/invoice/[id]/+page.svelte +++ /dev/null @@ -1,158 +0,0 @@ - - - - -
- - -
- -
- - {#if address} -
{address}
- {/if} - -
- - - {#if user && user.username !== username} - - - - {/if} -
- -
- {#if invoice.tip} -
- {$t('invoice.invoice')} - - {f(amountFiat, currency)} - {`${sat(amount)}`} - -
- -
- {$t('invoice.tip')} - {f(tipAmount, currency)} - {`${sat(tip)}`} - -
- {/if} - - {#if amount > 0} -
- {$t('invoice.total')} - {f(amountFiat + parseFloat(tipAmount), currency)} - {`${sat(tip + amount)}`} -
- {/if} -
-
- - diff --git a/src/routes/(app)/invoice/[id]/paid/+page.svelte b/src/routes/(app)/invoice/[id]/paid/+page.svelte deleted file mode 100644 index 2ccbc971..00000000 --- a/src/routes/(app)/invoice/[id]/paid/+page.svelte +++ /dev/null @@ -1,62 +0,0 @@ - - -
-
- -
- {#if received} -

{$t('invoice.paymentSuccessful')}

-

- {f(amountFiat, currency)} - {#if tip} - + {f(tipFiat, currency)} - {/if} -

-

- {sat(received - tip)} - {#if tip} - +{sat(tip)} - {/if} -

- {/if} - - {#if pending} -

Payment detected

-

- {f(pendingFiat, currency)} - {#if tip} - + {f(tipFiat, currency)} - {/if} -

-

- {sat(pending - tip)} - {#if tip} - +{sat(tip)} - {/if} -

- {/if} -
- - -
- - -
{$t('payments.tapAnywhere')}
diff --git a/src/routes/(app)/invoice/[id]/tip/+page.server.js b/src/routes/(app)/invoice/[id]/tip/+page.server.js deleted file mode 100644 index c78e5020..00000000 --- a/src/routes/(app)/invoice/[id]/tip/+page.server.js +++ /dev/null @@ -1,11 +0,0 @@ -import invoice from '$lib/invoice'; -import { redirect } from '@sveltejs/kit'; - -export async function load({ parent }) { - let { invoice } = await parent(); - if (!invoice.amount) throw redirect(307, `/invoice/${invoice.id}`); -} - -export const actions = { - default: invoice -}; diff --git a/src/routes/(app)/invoice/[id]/tip/+page.svelte b/src/routes/(app)/invoice/[id]/tip/+page.svelte deleted file mode 100644 index 308720ab..00000000 --- a/src/routes/(app)/invoice/[id]/tip/+page.svelte +++ /dev/null @@ -1,252 +0,0 @@ - - - - -
-
- - - - - - - - -

{$t('invoice.addTipq')}

- {#if !showCustomAmount} -
{Math.round(tipPercent)}%
- - - -
-
- - {f(amountFiat, currency)} - +{f(tipAmount, currency)} - -
- -
- {sat(amount)} - +{sat(tip)} -
-
- - {#if tip} -
- - -
- {:else} - {#each tipAmounts as amount} - - {/each} - {/if} - -
- -
- {/if} - -
-
- - {/if} -
- - diff --git a/src/routes/(app)/login/+page.server.js b/src/routes/(app)/login/+page.server.js index 873b68d4..4c3c0897 100644 --- a/src/routes/(app)/login/+page.server.js +++ b/src/routes/(app)/login/+page.server.js @@ -14,7 +14,7 @@ export const actions = { try { let r = await login(user, cookies); - console.log("R", r) + console.log('R', r); } catch (e) { return invalid(400, { error: 'Login failed', message: e.message, ...form }); } diff --git a/src/routes/(app)/password/+server.js b/src/routes/(app)/password/+server.js index 9f2ab6b8..b4a81740 100644 --- a/src/routes/(app)/password/+server.js +++ b/src/routes/(app)/password/+server.js @@ -2,6 +2,6 @@ import { json } from '@sveltejs/kit'; import { auth, post } from '$lib/utils'; export async function POST({ cookies, request }) { - let result = await post('/checkPassword', await request.json(), auth(cookies)); + let result = await post('/password', await request.json(), auth(cookies)); return json(result); } diff --git a/src/routes/(app)/pot/[name]/+page.server.js b/src/routes/(app)/pot/[name]/+page.server.js new file mode 100644 index 00000000..8f8b9d8f --- /dev/null +++ b/src/routes/(app)/pot/[name]/+page.server.js @@ -0,0 +1,23 @@ +import { error, redirect } from '@sveltejs/kit'; +import { auth, get, post } from '$lib/utils'; +import Qr from 'qrcode-base64'; + +export let load = async ({ params: { name }, url }) => { + let { amount, payments } = await get(`/pot/${name}`); + + let src = Qr.drawImg(url.href, { size: 300 }); + return { amount, payments, src }; +}; + +export const actions = { + default: async ({ cookies, locals, params, request }) => { + let { user } = locals; + + if (user) { + await post('/redeem', params, auth(cookies)); + throw redirect(307, `/${user.username}/payments`); + } + + throw redirect(307, '/register'); + } +}; diff --git a/src/routes/(app)/pot/[name]/+page.svelte b/src/routes/(app)/pot/[name]/+page.svelte new file mode 100644 index 00000000..48dc9b31 --- /dev/null +++ b/src/routes/(app)/pot/[name]/+page.svelte @@ -0,0 +1,96 @@ + + +
+
+ + + +
+ +
+
+
+ +

Public Pot

+
+

Anyone who knows the URL for this pot can add or take out funds

+
+
+

+ {f(amountFiat, currency)} +

+

+ {sat(amount)} +

+
+
+ + +
+
+
diff --git a/src/routes/(app)/pot/[name]/withdraw/+page.server.js b/src/routes/(app)/pot/[name]/withdraw/+page.server.js new file mode 100644 index 00000000..6534e07b --- /dev/null +++ b/src/routes/(app)/pot/[name]/withdraw/+page.server.js @@ -0,0 +1,21 @@ +import { invalid, redirect } from '@sveltejs/kit'; +import { auth, post } from '$lib/utils'; + +export async function load({ parent }) { + let { user } = await parent(); + if (!user) throw redirect(307, '/register'); +} + +export const actions = { + default: async ({ cookies, request }) => { + let body = Object.fromEntries(await request.formData()); + + try { + await post('/withdraw', body, auth(cookies)); + } catch (e) { + return invalid(400, { message: e.message }); + } + + throw redirect(307, `/pot/${body.name}`); + } +}; diff --git a/src/routes/(app)/pot/[name]/withdraw/+page.svelte b/src/routes/(app)/pot/[name]/withdraw/+page.svelte new file mode 100644 index 00000000..bb11ddde --- /dev/null +++ b/src/routes/(app)/pot/[name]/withdraw/+page.svelte @@ -0,0 +1,55 @@ + + + + +{#if form?.message} +
+ {form.message} +
+{/if} + +
+ + +
+ + + + +
+ +
+
+
diff --git a/src/routes/(app)/register/+page.server.js b/src/routes/(app)/register/+page.server.js index 793bd7f6..58b62ba2 100644 --- a/src/routes/(app)/register/+page.server.js +++ b/src/routes/(app)/register/+page.server.js @@ -9,10 +9,12 @@ export const load = async ({ parent }) => { export const actions = { default: async ({ cookies, request }) => { let form = Object.fromEntries(await request.formData()); - let { username, password, cipher, salt, pubkey } = form; + let { username, password, cipher, salt, pubkey, loginRedirect } = form; let user = { username, password, cipher, salt, pubkey }; let error; + console.log('LR', loginRedirect); + try { await post('/register', { user }); } catch (e) { @@ -27,6 +29,6 @@ export const actions = { } if (error) return invalid(400, { error }); - throw redirect(307, `/${user.username}/dashboard`); + throw redirect(307, loginRedirect || `/${user.username}/dashboard`); } }; diff --git a/src/routes/(app)/send/[...text]/+page.server.js b/src/routes/(app)/send/[...text]/+page.server.js index eab57d64..f0c8b892 100644 --- a/src/routes/(app)/send/[...text]/+page.server.js +++ b/src/routes/(app)/send/[...text]/+page.server.js @@ -73,8 +73,8 @@ export async function load({ cookies, params, request, url }) { export const actions = { default: async ({ request, url }) => { const form = await request.formData(); - await parse(form.get('text'), url.host); - - return invalid(403, { error: 'Does not compute, try again' }); + let t = form.get('text'); + await parse(t, url.host); + throw redirect(307, `/send/pot/${t}`); } }; diff --git a/src/routes/(app)/send/pot/[name]/[...amount]/+page.server.js b/src/routes/(app)/send/pot/[name]/[...amount]/+page.server.js new file mode 100644 index 00000000..f25fcb6d --- /dev/null +++ b/src/routes/(app)/send/pot/[name]/[...amount]/+page.server.js @@ -0,0 +1,17 @@ +import { invalid, redirect } from '@sveltejs/kit'; +import { auth, post } from '$lib/utils'; + +export const actions = { + default: async ({ cookies, request }) => { + let body = Object.fromEntries(await request.formData()); + let p; + + try { + p = await post('/send', body, auth(cookies)); + } catch (e) { + return invalid(400, { message: e.message }); + } + + if (p) throw redirect(307, `/pot/${body.name}`); + } +}; diff --git a/src/routes/(app)/send/pot/[name]/[...amount]/+page.svelte b/src/routes/(app)/send/pot/[name]/[...amount]/+page.svelte new file mode 100644 index 00000000..bb11ddde --- /dev/null +++ b/src/routes/(app)/send/pot/[name]/[...amount]/+page.svelte @@ -0,0 +1,55 @@ + + + + +{#if form?.message} +
+ {form.message} +
+{/if} + +
+ + +
+ + + + +
+ +
+
+
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 a659eef3..e670320c 100644 --- a/src/routes/(app)/send/user/[username]/[...amount]/+page.server.js +++ b/src/routes/(app)/send/user/[username]/[...amount]/+page.server.js @@ -14,6 +14,7 @@ export const actions = { try { let body = Object.fromEntries(await request.formData()); let { amount, confirmed } = body; + amount = parseInt(amount); if (!confirmed) { return invalid(403, { amount, confirm: true }); @@ -21,6 +22,7 @@ export const actions = { await post('/send', body, auth(cookies)); } catch (e) { + console.log(e); return invalid(400, { message: e.message }); } diff --git a/src/routes/(app)/send/user/[username]/[...amount]/+page.svelte b/src/routes/(app)/send/user/[username]/[...amount]/+page.svelte index 4cb8cfce..07e29f44 100644 --- a/src/routes/(app)/send/user/[username]/[...amount]/+page.svelte +++ b/src/routes/(app)/send/user/[username]/[...amount]/+page.svelte @@ -5,23 +5,32 @@ import { enhance } from '$app/forms'; import { Avatar, Icon, Numpad, Spinner } from '$comp'; import { page } from '$app/stores'; - import { back, f, s, sats } from '$lib/utils'; + import { back, f, post, s, sats } from '$lib/utils'; export let data; export let form; - let { recipient, user } = data; + let { recipient, rates, user } = data; let currency = user?.currency || 'USD'; let amount = form?.amount || data.amount; let a, af, amountFiat = amount * ($selectedRate / sats), - fiat = !amount; + fiat = !amount, + hash; - let setAmount = () => { + let setAmount = async () => { amount = a; amountFiat = af; + + ({ hash } = await post('/invoice', { + invoice: { + amount, + rate: rates[recipient.currency] + }, + user: recipient + })); }; let handleBack = () => { @@ -77,6 +86,7 @@ +
{#if amount} diff --git a/src/routes/(app)/send/voucher/+page.server.js b/src/routes/(app)/send/voucher/+page.server.js deleted file mode 100644 index d479c76a..00000000 --- a/src/routes/(app)/send/voucher/+page.server.js +++ /dev/null @@ -1,16 +0,0 @@ -import { invalid, redirect } from '@sveltejs/kit'; -import { auth, post } from '$lib/utils'; - -export const actions = { - default: async ({ cookies, request }) => { - let p; - try { - let body = Object.fromEntries(await request.formData()); - p = await post('/send', body, auth(cookies)); - } catch (e) { - return invalid(400, { message: e.message }); - } - - if (p) throw redirect(307, `/voucher/${p.redeemcode}`); - } -}; diff --git a/src/routes/(app)/send/voucher/+page.svelte b/src/routes/(app)/send/voucher/+page.svelte deleted file mode 100644 index 0020adc3..00000000 --- a/src/routes/(app)/send/voucher/+page.svelte +++ /dev/null @@ -1,54 +0,0 @@ - - - - -{#if form?.message} -
- {form.message} -
-{/if} - -
- - -
- - - -
- -
-
-
diff --git a/src/routes/(app)/sent/+page.server.js b/src/routes/(app)/sent/+page.server.js index fb35e367..381ff32f 100644 --- a/src/routes/(app)/sent/+page.server.js +++ b/src/routes/(app)/sent/+page.server.js @@ -1,6 +1,6 @@ import { get, auth } from '$lib/utils'; export let load = async ({ cookies }) => { - let { payments } = await get('/payments', auth(cookies)); - return { payments } -} + let { payments } = await get('/payments', auth(cookies)); + return { payments }; +}; diff --git a/src/routes/(app)/sent/+page.svelte b/src/routes/(app)/sent/+page.svelte index 2168a517..79a0aa6e 100644 --- a/src/routes/(app)/sent/+page.svelte +++ b/src/routes/(app)/sent/+page.svelte @@ -8,7 +8,7 @@ export let data; let { payments, user } = data; - let payment = payments[0] + let payment = payments[0]; let { amount, rate } = payment; amount = Math.abs(amount); diff --git a/src/routes/(app)/tx/[id]/+page.server.js b/src/routes/(app)/tx/[id]/+page.server.js index 7db5d4f1..cbd7355e 100644 --- a/src/routes/(app)/tx/[id]/+page.server.js +++ b/src/routes/(app)/tx/[id]/+page.server.js @@ -2,5 +2,5 @@ import { auth, get } from '$lib/utils'; export async function load({ cookies, params }) { let tx = await get(`/payments/${params.id}`, auth(cookies)); - return { tx }; + return { tx }; } diff --git a/src/routes/(app)/tx/[id]/+page.svelte b/src/routes/(app)/tx/[id]/+page.svelte index 63e45f17..a2bb1459 100644 --- a/src/routes/(app)/tx/[id]/+page.svelte +++ b/src/routes/(app)/tx/[id]/+page.svelte @@ -2,13 +2,15 @@ import { t } from '$lib/translations'; import { back, copy, f, s, sats } from '$lib/utils'; import { Avatar, Icon } from '$comp'; - import { format, parseISO } from 'date-fns'; + import { format } from 'date-fns'; import { PUBLIC_EXPLORER as expl } from '$env/static/public'; export let data; let { user, tx } = data; let { username } = user; - let { amount, hash, createdAt, rate, network, preimage, fee, currency } = tx; + let { amount, hash, created, rate, type, preimage, fee, currency } = tx; + fee = fee || 0; + let fiat = (Math.abs(amount) * rate) / sats; @@ -32,12 +34,12 @@
{$t('payments.date')}
- {format(parseISO(createdAt), 'MMMM d')}, - {format(parseISO(createdAt), 'h:mm aaa')} + {format(new Date(created), 'MMMM d')}, + {format(new Date(created), 'h:mm aaa')}
- {#if network === 'lightning'} + {#if type === 'lightning'}
{$t('payments.preimage')}
@@ -47,16 +49,14 @@ {:else}
{$t('payments.id')}
-
-
- {hash} +
+
+ {hash} +
+
- -
{/if}
diff --git a/src/routes/(app)/voucher/[redeemcode]/+page.server.js b/src/routes/(app)/voucher/[redeemcode]/+page.server.js deleted file mode 100644 index fbbec7bc..00000000 --- a/src/routes/(app)/voucher/[redeemcode]/+page.server.js +++ /dev/null @@ -1,24 +0,0 @@ -import { error, redirect } from '@sveltejs/kit'; -import { auth, get, post } from '$lib/utils'; -import Qr from 'qrcode-base64'; - -export let load = async ({ params: { redeemcode }, url }) => { - let payment = await get(`/voucher/${redeemcode}`); - console.log(payment); - - let src = Qr.drawImg(url.href, { size: 300 }); - return { payment, src }; -}; - -export const actions = { - default: async ({ cookies, locals, params, request }) => { - let { user } = locals; - - if (user) { - await post('/redeem', params, auth(cookies)); - throw redirect(307, `/${user.username}/payments`); - } - - throw redirect(307, '/register'); - } -}; diff --git a/src/routes/(app)/voucher/[redeemcode]/+page.svelte b/src/routes/(app)/voucher/[redeemcode]/+page.svelte deleted file mode 100644 index 9af67498..00000000 --- a/src/routes/(app)/voucher/[redeemcode]/+page.svelte +++ /dev/null @@ -1,77 +0,0 @@ - - -
-
- - - -
- -
-
- {#if !redeemed} - copy(redeemcode)} - alt="Redeem Code" - /> - {/if} -
-
-

- {f(amountFiat, currency)} -

-

- {sat(amount)} -

-
-
{$t('transactions.from')}
-
- -
{user.username}
-
-
-
- {#if redeemer} -
{$t('transactions.redeemedBy')}
-
- -
{redeemer.username}
-
- {:else} -
($loginRedirect = `/redeem/${redeemcode}`)} - > - -
- {/if} -
-
-
-
-- cgit v1.2.3