aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2023-01-31 19:56:11 -0800
committerAdam Soltys <[email protected]>2023-01-31 19:56:11 -0800
commiteff1fd2b4747d07a6b342d2561785c18ea500bcb (patch)
treeeaeea860df13d5fc5b5956f628f93ec1009caf97
parente44e960b709c5e8289c7e5f785d941d0754de81c (diff)
downloadcoinos-ui-eff1fd2b4747d07a6b342d2561785c18ea500bcb.tar.gz
coinos-ui-eff1fd2b4747d07a6b342d2561785c18ea500bcb.zip
payments csv
-rw-r--r--src/routes/(app)/[username]/payments/[...page]/+page.server.js2
-rw-r--r--src/routes/(app)/[username]/payments/[...page]/+page.svelte51
-rw-r--r--src/routes/(app)/[username]/payments/[...page]/+server.js18
-rw-r--r--src/routes/(app)/payment/[id]/+page.svelte2
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;