diff options
| author | Adam Soltys <[email protected]> | 2023-01-31 19:56:11 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2023-01-31 19:56:11 -0800 |
| commit | eff1fd2b4747d07a6b342d2561785c18ea500bcb (patch) | |
| tree | eaeea860df13d5fc5b5956f628f93ec1009caf97 | |
| parent | e44e960b709c5e8289c7e5f785d941d0754de81c (diff) | |
| download | coinos-ui-eff1fd2b4747d07a6b342d2561785c18ea500bcb.tar.gz coinos-ui-eff1fd2b4747d07a6b342d2561785c18ea500bcb.zip | |
payments csv
4 files changed, 63 insertions, 10 deletions
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 @@ <a href={`/pot/${p.pot}`}> <div class="text-secondary flex"> <div class="my-auto mr-1"> - <img src="/icons/logo-symbol.svg" class="w-12 border-4 border-transparent" alt="Pot" /> + <img + src="/icons/logo-symbol.svg" + class="w-12 border-4 border-transparent" + alt="Pot" + /> </div> <div class="my-auto">Pot</div> @@ -162,7 +193,11 @@ <div class="text-3xl">⚡️</div> {:else} <div class="my-auto mr-1"> - <img src="/images/bitcoin.svg" class="w-12 border-4 border-transparent" alt="Bitcoin" /> + <img + src="/images/bitcoin.svg" + class="w-12 border-4 border-transparent" + alt="Bitcoin" + /> </div> {/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; |
