aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2023-05-23 20:31:13 -0700
committerAdam Soltys <[email protected]>2023-05-23 20:31:13 -0700
commitb3d2921b099c6748990bb38fec4bea52e8786535 (patch)
treecc6168c3cbde24b601cab86875ba14c9a354d4c8
parent8296dbe6a3e2aea354870e54f09f9363b3d26a42 (diff)
downloadcoinos-ui-b3d2921b099c6748990bb38fec4bea52e8786535.tar.gz
coinos-ui-b3d2921b099c6748990bb38fec4bea52e8786535.zip
payment totals
-rw-r--r--src/locales/en.json5
-rw-r--r--src/routes/(app)/[username]/(profile)/+page.svelte14
-rw-r--r--src/routes/(app)/[username]/payments/[...page]/+page.server.js6
-rw-r--r--src/routes/(app)/[username]/payments/[...page]/+page.svelte29
-rw-r--r--src/routes/(app)/register/+page.server.js3
5 files changed, 43 insertions, 14 deletions
diff --git a/src/locales/en.json b/src/locales/en.json
index 8f824e6f..c7d38583 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -174,7 +174,7 @@
},
"send": {
"contacts": "Contacts",
- "scan": "Scan",
+ "scan": "Scan QR",
"paste": "Paste",
"next": "Next",
"placeholder": "Paste a bitcoin address, lightning invoice or coinos username"
@@ -234,6 +234,9 @@
}
},
"payments": {
+ "total": "Total",
+ "gainLoss": "Gain/Loss",
+ "presentValue": "Present Value",
"amount": "Amount",
"date": "Date",
"id": "Transaction ID",
diff --git a/src/routes/(app)/[username]/(profile)/+page.svelte b/src/routes/(app)/[username]/(profile)/+page.svelte
index f228defc..7b81b797 100644
--- a/src/routes/(app)/[username]/(profile)/+page.svelte
+++ b/src/routes/(app)/[username]/(profile)/+page.svelte
@@ -96,14 +96,24 @@
<div class="flex gap-4 justify-center w-full">
<a href={`/${user.username}/receive`}>
<button
- class="rounded-full border py-3 px-6 font-bold hover:opacity-80 flex w-60 bg-black text-white"
+ class="rounded-full border py-3 px-6 font-bold hover:opacity-80 flex w-60"
>
<div class="mx-auto flex">
- <Icon icon="numpad" style="my-auto h-6 mr-2 invert" />
+ <Icon icon="numpad" style="my-auto h-6 mr-2" />
<div class="my-auto mt-1">{$t("user.requestPayment")}</div>
</div>
</button>
</a>
+ <a href={`/scan`}>
+ <button
+ class="rounded-full border py-3 px-6 font-bold hover:opacity-80 flex w-60"
+ >
+ <div class="mx-auto flex">
+ <Icon icon="scan" style="my-auto h-6 mr-2" />
+ <div class="my-auto mt-1">{$t("user.send.scan")}</div>
+ </div>
+ </button>
+ </a>
{#if user.eligible}
<a href={`/buy`}>
diff --git a/src/routes/(app)/[username]/payments/[...page]/+page.server.js b/src/routes/(app)/[username]/payments/[...page]/+page.server.js
index adc6dac8..cb94d71d 100644
--- a/src/routes/(app)/[username]/payments/[...page]/+page.server.js
+++ b/src/routes/(app)/[username]/payments/[...page]/+page.server.js
@@ -17,8 +17,8 @@ export async function load({ cookies, params, request }) {
let url = `/payments?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));
+ let { count, payments, totals } = await get(url, auth(cookies));
+ let pages = new Array(Math.ceil(count / limit));
- return { total, payments, page, pages, start, end };
+ return { payments, page, pages, start, end, totals };
}
diff --git a/src/routes/(app)/[username]/payments/[...page]/+page.svelte b/src/routes/(app)/[username]/payments/[...page]/+page.svelte
index bdfcbb04..adfaf680 100644
--- a/src/routes/(app)/[username]/payments/[...page]/+page.svelte
+++ b/src/routes/(app)/[username]/payments/[...page]/+page.svelte
@@ -19,7 +19,8 @@
classic: 'classic'
};
- let { start, end, user } = data;
+ let { start, end, user, rates } = data;
+
let change = ({ target: { value } }) => goto(value);
let link = (p) => {
if (p.pot) return `/pot/${p.pot}`;
@@ -39,9 +40,9 @@
: 0;
let p,
- total,
+ totals,
pages = [];
- $: data && ({ page: p, pages, start, end, total, payments: $payments } = data);
+ $: data && ({ page: p, pages, start, end, totals, payments: $payments } = data);
$: $page && ($newPayment = false);
$: $newPayment && invalidate(`/users/${user.username}`);
@@ -166,11 +167,7 @@
<a href={`/pot/${p.memo}`}>
<div class="text-secondary flex">
<div class="my-auto mr-1">
- <img
- src="/images/moneypot.png"
- class="w-12"
- alt="Pot"
- />
+ <img src="/images/moneypot.png" class="w-12" alt="Pot" />
</div>
<div class="my-auto">Pot</div>
@@ -225,6 +222,22 @@
<p class="text-secondary text-lg text-center">{$t('payments.empty')}</p>
{/each}
</div>
+
+ <div class="grid grid-cols-3 w-full text-center">
+ <span class="text-lg text-secondary">{$t('payments.total')}</span>
+ <span class="text-lg text-secondary">{$t('payments.presentValue')}</span>
+ <span class="text-lg text-secondary">{$t('payments.gainLoss')}</span>
+
+ {#each Object.keys(totals) as c}
+ {@const total = totals[c]['fiat']}
+ {@const pv = (totals[c]['sats'] * rates[c]) / sats}
+ {@const gain = (pv * 100) / total - 100}
+ <span class="text-lg"><b>{f(total, c)}</b></span>
+ <span class="text-lg"><b>{f(pv, c)}</b></span>
+ <span class="text-lg" class:text-red-800={gain < 0}><b>{Math.abs(gain).toFixed(2)}%</b></span>
+ {/each}
+ </div>
+
<button
class="ml-auto rounded-full border py-2 px-4 w-36 hover:opacity-80 flex mx-auto"
on:click={csv}
diff --git a/src/routes/(app)/register/+page.server.js b/src/routes/(app)/register/+page.server.js
index 79aed8bc..4d740b5b 100644
--- a/src/routes/(app)/register/+page.server.js
+++ b/src/routes/(app)/register/+page.server.js
@@ -17,9 +17,12 @@ export const actions = {
if (loginRedirect === 'undefined') loginRedirect = undefined;
+ console.log("OH", user)
+
try {
await post('/register', { user }, { 'cf-connecting-ip': ip });
} catch (e) {
+ console.log(e)
if (e.message.includes('taken')) error = e.message;
}