From eff1fd2b4747d07a6b342d2561785c18ea500bcb Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 31 Jan 2023 19:56:11 -0800 Subject: payments csv --- .../[username]/payments/[...page]/+page.server.js | 2 +- .../[username]/payments/[...page]/+page.svelte | 51 ++++++++++++++++++---- .../(app)/[username]/payments/[...page]/+server.js | 18 ++++++++ src/routes/(app)/payment/[id]/+page.svelte | 2 +- 4 files changed, 63 insertions(+), 10 deletions(-) create mode 100644 src/routes/(app)/[username]/payments/[...page]/+server.js (limited to 'src') diff --git a/src/routes/(app)/[username]/payments/[...page]/+page.server.js b/src/routes/(app)/[username]/payments/[...page]/+page.server.js index 6ced265d..adc6dac8 100644 --- a/src/routes/(app)/[username]/payments/[...page]/+page.server.js +++ b/src/routes/(app)/[username]/payments/[...page]/+page.server.js @@ -14,7 +14,7 @@ export async function load({ cookies, params, request }) { 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}`; + let url = `/payments?start=${start * 1000}&limit=${limit}&offset=${offset}`; if (end) url += `&end=${end * 1000}`; let { total, payments } = await get(url, auth(cookies)); diff --git a/src/routes/(app)/[username]/payments/[...page]/+page.svelte b/src/routes/(app)/[username]/payments/[...page]/+page.svelte index 551238cb..4a3f58f5 100644 --- a/src/routes/(app)/[username]/payments/[...page]/+page.svelte +++ b/src/routes/(app)/[username]/payments/[...page]/+page.svelte @@ -4,7 +4,7 @@ import { format, parseISO } from 'date-fns'; import { newPayment, payments } from '$lib/store'; import { t } from '$lib/translations'; - import { f, s, sat, sats } from '$lib/utils'; + import { get, f, s, sat, sats } from '$lib/utils'; import { page } from '$app/stores'; import { differenceInDays, getUnixTime, sub } from 'date-fns'; import { goto, invalidate } from '$app/navigation'; @@ -49,14 +49,41 @@ ? $page.url.pathname.substring(0, $page.url.pathname.lastIndexOf('/')) : $page.url.pathname; - let csv = () => { - const keys = ['hash', 'updatedAt', 'rate', 'currency', 'amount', 'fee', 'tip']; - const csv = + let csv = async () => { + let url = `/${user.username}/payments`; + if (start) url += `/${start}`; + if (end) url += `/${end}`; + + let { payments } = await get(url); + + payments = payments.map((p) => ({ + ...p, + created: new Date(p.created), + fiat: f((p.amount || 0) * p.rate / sats, p.currency), + fiatfee: f((p.fee || 0) * p.rate / sats, p.currency), + fiattip: f((p.tip || 0) * p.rate / sats, p.currency) + })); + + let keys = [ + 'type', + 'id', + 'created', + 'rate', + 'currency', + 'amount', + 'fee', + 'tip', + 'fiat', + 'fiatfee', + 'fiattip' + ]; + + let csv = keys.map((k) => `"${k}"`).join(',') + '\n' + - $payments.map((r) => keys.map((k) => `"${r[k]}"`).join(',')).join('\n'); + payments.map((r) => keys.map((k) => `"${r[k] || ''}"`).join(',')).join('\n'); - const filename = 'payments.csv'; + let filename = 'payments.csv'; let blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' }); if (navigator.msSaveBlob) { navigator.msSaveBlob(blob, filename); @@ -141,7 +168,11 @@
- Pot + Pot
Pot
@@ -162,7 +193,11 @@
⚡️
{:else}
- Bitcoin + Bitcoin
{/if} diff --git a/src/routes/(app)/[username]/payments/[...page]/+server.js b/src/routes/(app)/[username]/payments/[...page]/+server.js new file mode 100644 index 00000000..c33bd864 --- /dev/null +++ b/src/routes/(app)/[username]/payments/[...page]/+server.js @@ -0,0 +1,18 @@ +import { get, auth } from '$lib/utils'; +import { json } from '@sveltejs/kit'; + +export async function GET({ cookies, params }) { + let parts = params.page.split('/'); + + let start, end; + if (parts.length === 1) [start] = parts; + if (parts.length === 2) [start, end] = parts; + + if (!start) start = Date.now() / 1000 - 24 * 60 * 60; + + let url = `/payments?start=${start * 1000}`; + if (end) url += `&end=${end * 1000}`; + + let { payments } = await get(url, auth(cookies)); + return json({ payments }); +} diff --git a/src/routes/(app)/payment/[id]/+page.svelte b/src/routes/(app)/payment/[id]/+page.svelte index 9eefda2b..bcad7205 100644 --- a/src/routes/(app)/payment/[id]/+page.svelte +++ b/src/routes/(app)/payment/[id]/+page.svelte @@ -8,7 +8,7 @@ export let data; let { user, tx } = data; let { username } = user; - let { id, amount, hash, created, rate, type, ref, fee, currency } = tx; + let { id, amount, created, rate, type, ref, fee, currency } = tx; fee = fee || 0; let fiat = (Math.abs(amount) * rate) / sats; -- cgit v1.2.3