From b1ad12734eeafc36a07bd76f649a98ae9ade5723 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Fri, 13 Jan 2023 23:49:59 -0800 Subject: payments migration --- src/components/AppHeader.svelte | 4 +- src/components/Invoice.svelte | 4 +- src/components/Request.svelte | 4 +- src/lib/socket.js | 1 - src/lib/store.js | 1 - src/lib/utils.js | 2 +- src/locales/de.json | 2 +- src/locales/en.json | 6 +- src/locales/es.json | 2 +- src/locales/pt.json | 2 +- .../(app)/[username]/(profile)/+layout.svelte | 2 +- .../[username]/(profile)/messages/+page.svelte | 4 +- src/routes/(app)/[username]/dashboard/+page.svelte | 4 +- .../[username]/payments/[...page]/+page.server.js | 24 +++ .../[username]/payments/[...page]/+page.svelte | 198 ++++++++++++++++++++ .../[username]/receive/[...param]/+page.svelte | 7 +- src/routes/(app)/[username]/request/+page.svelte | 6 +- .../(app)/[username]/request/[id]/+page.svelte | 6 +- .../transactions/[...page]/+page.server.js | 24 --- .../[username]/transactions/[...page]/+page.svelte | 204 --------------------- src/routes/(app)/invoice/[id]/+layout.server.js | 5 +- src/routes/(app)/invoice/[id]/+page.svelte | 3 +- src/routes/(app)/invoice/[id]/paid/+page.svelte | 3 +- src/routes/(app)/invoice/[id]/tip/+page.svelte | 10 +- src/routes/(app)/ln/[lnurl]/+page.svelte | 2 +- .../(app)/redeem/[redeemcode]/+page.server.js | 2 +- src/routes/(app)/send/[...text]/+page.svelte | 2 +- src/routes/(app)/send/[uuid=uuid]/+page.svelte | 8 +- .../bitcoin/[address]/[...amount]/+page.svelte | 4 +- .../(app)/send/lightning/[payreq]/+page.svelte | 6 +- .../send/user/[username]/[...amount]/+page.svelte | 2 +- src/routes/(app)/send/voucher/+page.svelte | 2 +- src/routes/(app)/sent/+page.server.js | 6 + src/routes/(app)/sent/+page.svelte | 8 +- src/routes/(app)/tx/[id]/+page.svelte | 10 +- .../(app)/voucher/[redeemcode]/+page.server.js | 2 +- 36 files changed, 283 insertions(+), 299 deletions(-) create mode 100644 src/routes/(app)/[username]/payments/[...page]/+page.server.js create mode 100644 src/routes/(app)/[username]/payments/[...page]/+page.svelte delete mode 100644 src/routes/(app)/[username]/transactions/[...page]/+page.server.js delete mode 100644 src/routes/(app)/[username]/transactions/[...page]/+page.svelte create mode 100644 src/routes/(app)/sent/+page.server.js (limited to 'src') diff --git a/src/components/AppHeader.svelte b/src/components/AppHeader.svelte index 03767238..59537ffa 100644 --- a/src/components/AppHeader.svelte +++ b/src/components/AppHeader.svelte @@ -51,10 +51,10 @@ > - + diff --git a/src/components/Request.svelte b/src/components/Request.svelte index ab0b886a..44f8516d 100644 --- a/src/components/Request.svelte +++ b/src/components/Request.svelte @@ -18,14 +18,14 @@

{$request.requester.username} - {$t('transactions.readyToPay')} + {$t('payments.readyToPay')}

diff --git a/src/lib/socket.js b/src/lib/socket.js index aba2f965..755c87e4 100644 --- a/src/lib/socket.js +++ b/src/lib/socket.js @@ -1,7 +1,6 @@ import { get } from 'svelte/store'; import { events as $events, - invoices, invoice, request, newPayment, diff --git a/src/lib/store.js b/src/lib/store.js index 7383716d..e4d017b8 100644 --- a/src/lib/store.js +++ b/src/lib/store.js @@ -38,7 +38,6 @@ export const rate = writable(); export const user = writable(); export const selectedRate = writable(); export const token = persistSession('token'); -export const invoices = writable({}); export const newPayment = persistLocal('newPayment'); export const colorTheme = writable('from-primary to-gradient'); export const avatarUpload = writable(); diff --git a/src/lib/utils.js b/src/lib/utils.js index c1ec5e5b..f2d78ee8 100644 --- a/src/lib/utils.js +++ b/src/lib/utils.js @@ -86,7 +86,7 @@ export let protectedRoutes = [ /customers/, /dashboard/, /settings/, - /transactions/, + /payments/, /\/ln\//, /request/ ]; diff --git a/src/locales/de.json b/src/locales/de.json index 2262dea3..9f0c245e 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -243,7 +243,7 @@ "send": "Senden" } }, - "transactions": { + "payments": { "header": "Transaktionen", "AMOUNT": "GESAMTBETRAG", "TYPE": "TYP", diff --git a/src/locales/en.json b/src/locales/en.json index ec89d1c4..86504df5 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -257,12 +257,12 @@ "send": "Send" } }, - "transactions": { + "payments": { "amount": "Amount", "date": "Date", "id": "Transaction ID", "details": "Transaction Details", - "header": "Transactions", + "header": "Payments", "preimage": "Preimage", "type": "Type", "time": "Time", @@ -292,7 +292,7 @@ "isRequesting": "is requesting", "invoiceFrom": "Invoice from", "awaiting": "Awaiting", - "tapAnywhere": "Tap anywhere", + "tapAnywhere": "Tap anywhere to continue", "from": "from", "redeem": "Redeem", "redeemed": "Redeemed", diff --git a/src/locales/es.json b/src/locales/es.json index 5043243e..e151ec1a 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -241,7 +241,7 @@ "send": "Enviar" } }, - "transactions": { + "payments": { "header": "Historial de transacciones", "AMOUNT": "MONTO", "TYPE": "TIPO", diff --git a/src/locales/pt.json b/src/locales/pt.json index 72f9ef34..117a5101 100644 --- a/src/locales/pt.json +++ b/src/locales/pt.json @@ -243,7 +243,7 @@ "send": "Send" } }, - "transactions": { + "payments": { "header": "Transactions", "AMOUNT": "AMOUNT", "TYPE": "TYPE", diff --git a/src/routes/(app)/[username]/(profile)/+layout.svelte b/src/routes/(app)/[username]/(profile)/+layout.svelte index d76ff065..6528d688 100644 --- a/src/routes/(app)/[username]/(profile)/+layout.svelte +++ b/src/routes/(app)/[username]/(profile)/+layout.svelte @@ -118,7 +118,7 @@ - + diff --git a/src/routes/(app)/[username]/(profile)/messages/+page.svelte b/src/routes/(app)/[username]/(profile)/messages/+page.svelte index fd12c6bf..47228015 100644 --- a/src/routes/(app)/[username]/(profile)/messages/+page.svelte +++ b/src/routes/(app)/[username]/(profile)/messages/+page.svelte @@ -77,7 +77,7 @@

- {$t('transactions.sendMessage')} + {$t('payments.sendMessage')}

@@ -105,7 +105,7 @@ --> - + @@ -111,7 +111,7 @@ - + diff --git a/src/routes/(app)/[username]/payments/[...page]/+page.server.js b/src/routes/(app)/[username]/payments/[...page]/+page.server.js new file mode 100644 index 00000000..6ced265d --- /dev/null +++ b/src/routes/(app)/[username]/payments/[...page]/+page.server.js @@ -0,0 +1,24 @@ +import { get, auth } from '$lib/utils'; + +let limit = 25; + +export async function load({ cookies, params, request }) { + let parts = params.page.split('/'); + + let start, end, page; + if (parts.length === 1) [page] = parts; + if (parts.length === 2) [start, page] = parts; + if (parts.length === 3) [start, end, page] = parts; + if (!parseInt(page)) page = 1; + + let offset = (page - 1) * limit; + if (!start) start = Date.now() / 1000 - 24 * 60 * 60; + + let url = `/payments?v2=true&start=${start * 1000}&limit=${limit}&offset=${offset}`; + if (end) url += `&end=${end * 1000}`; + + let { total, payments } = await get(url, auth(cookies)); + let pages = new Array(Math.ceil(total / limit)); + + return { total, payments, page, pages, start, end }; +} diff --git a/src/routes/(app)/[username]/payments/[...page]/+page.svelte b/src/routes/(app)/[username]/payments/[...page]/+page.svelte new file mode 100644 index 00000000..4348eb72 --- /dev/null +++ b/src/routes/(app)/[username]/payments/[...page]/+page.svelte @@ -0,0 +1,198 @@ + + +
+

+ {$t('payments.header')} +

+ +
+
+
+ {#each presets as { start, end, title }, i} + + + + {/each} +
+
+ +
+ {#if pages.length > 1} + {#each pages as _, i} + +
+ {i + 1} +
+
+ {/each} + {/if} +
+ +
+ {#each $txns as tx} + +
+
+
+ {f(tx.amount * (tx.rate / sats), tx.currency)} + + {#if tx.tip} + + +{f(tx.tip * (tx.rate / sats), tx.currency)} + + {/if} +
+ +
+ {sat(tx.amount)} + + {#if tx.tip} + + +{sat(tx.tip)} + + {/if} +
+
+ +
+ {#if tx.redeemcode} + +
+
+ +
+ +
Voucher
+
+
+ {:else if tx.with} + +
+
+ +
+
{tx.with.username}
+
+
+ {:else} +
+
⚡️
+ +
+ {tx.amount > 0 ? 'Received' : 'Sent'} +
+
+ {/if} +
+ +
+
+ {format(new Date(tx.created_at), 'h:mm aaa')} +
+
+ {format(new Date(tx.created_at), 'MMM d')} +
+
+
+ + {:else} +

{$t('payments.empty')}

+ {/each} +
+ +
+
+ + diff --git a/src/routes/(app)/[username]/receive/[...param]/+page.svelte b/src/routes/(app)/[username]/receive/[...param]/+page.svelte index 4559f00c..18d6b21e 100644 --- a/src/routes/(app)/[username]/receive/[...param]/+page.svelte +++ b/src/routes/(app)/[username]/receive/[...param]/+page.svelte @@ -3,7 +3,7 @@ import { t } from '$lib/translations'; import { enhance } from '$app/forms'; import { page } from '$app/stores'; - import { invoices, requestRedirect } from '$lib/store'; + import { requestRedirect } from '$lib/store'; import { browser } from '$app/environment'; import { goto } from '$app/navigation'; @@ -19,9 +19,6 @@ let { currency, username } = data.subject; let { user } = data; - - $: paid = browser && form && Object.values($invoices).find((inv) => inv.amount === form.amount); - $: paid && goto(`/invoice/${paid.id}/paid`);
@@ -43,7 +40,7 @@ class="bg-black text-white rounded-xl w-full h-[48px] flex justify-center items-center font-semibold opacity-100 hover:opacity-80" > - {amount ? $t('transactions.next') : $t('transactions.sendersChoice')} + {amount ? $t('payments.next') : $t('payments.sendersChoice')}
diff --git a/src/routes/(app)/[username]/request/+page.svelte b/src/routes/(app)/[username]/request/+page.svelte index fb3d0599..305cc8fb 100644 --- a/src/routes/(app)/[username]/request/+page.svelte +++ b/src/routes/(app)/[username]/request/+page.svelte @@ -16,7 +16,7 @@

- {$t('transactions.requestAnInvoice')} + {$t('payments.requestAnInvoice')}

@@ -25,7 +25,7 @@