From bf83d563fdac23da32b547130f0e24b48bf4b743 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 4 Apr 2023 15:11:42 -0700 Subject: rate refactoring --- src/components/Numpad.svelte | 1 - src/lib/store.js | 1 - src/lib/utils.js | 50 ++++--- src/routes/(app)/+layout.svelte | 17 +-- .../(app)/[username]/(profile)/+layout.svelte | 24 +-- src/routes/(app)/[username]/(profile)/+page.svelte | 41 ++++-- .../(app)/[username]/dashboard/+page.server.js | 4 - src/routes/(app)/[username]/dashboard/+page.svelte | 163 --------------------- .../[username]/invoice/[hash]/+layout.server.js | 6 +- .../[username]/invoice/[hash]/paid/+page.svelte | 8 +- src/routes/(app)/buy/+page.svelte | 21 +-- src/routes/(app)/launch/purchase/+page.svelte | 1 - src/routes/(app)/pot/[name]/+page.svelte | 2 +- .../send/user/[username]/[...amount]/+page.svelte | 5 +- 14 files changed, 77 insertions(+), 267 deletions(-) delete mode 100644 src/routes/(app)/[username]/dashboard/+page.server.js delete mode 100644 src/routes/(app)/[username]/dashboard/+page.svelte (limited to 'src') diff --git a/src/components/Numpad.svelte b/src/components/Numpad.svelte index 20bfe561..82512678 100644 --- a/src/components/Numpad.svelte +++ b/src/components/Numpad.svelte @@ -1,6 +1,5 @@ diff --git a/src/routes/(app)/[username]/(profile)/+page.svelte b/src/routes/(app)/[username]/(profile)/+page.svelte index 09335e9c..1ce09f38 100644 --- a/src/routes/(app)/[username]/(profile)/+page.svelte +++ b/src/routes/(app)/[username]/(profile)/+page.svelte @@ -2,24 +2,23 @@ import { onMount } from 'svelte'; import { Icon, Avatar, Balance, Feed } from '$comp'; import { t } from '$lib/translations'; - import { f, sat, sats } from '$lib/utils'; + import { ease, f, sat, sats } from '$lib/utils'; import { sign, send, encrypt, decrypt } from '$lib/nostr'; - import { event as e, password } from '$lib/store'; + import { event as e, password, rate, animatedRate } from '$lib/store'; import { browser } from '$app/environment'; export let data; - let { messages, notes, invoices, sent, received, subject, user } = data; + let { messages, notes, invoices, sent, received, subject, user, rates } = data; $: refresh(data); - let refresh = (d) => ({ messages, notes, invoices, sent, received, subject, user } = d); + let refresh = (d) => ({ messages, notes, invoices, sent, received, subject, user, rates } = d); let keys = new Set(); let latest = []; - let i = 0; let ready; e.subscribe(async (event) => { if (!(event && ready)) return; - if (event.recipient.id === user?.id && !~latest.findIndex((m) => m.id === event.id)) { + if (event.recipient?.id === user.id && !~latest.findIndex((m) => m.id === event.id)) { event.content = await decrypt({ event, user }); let i = latest.findIndex((m) => m.pubkey === event.pubkey); @@ -34,22 +33,46 @@ $: initialize($password); let initialize = async (p) => { + let i = 0; ready = false; - if (!p) return; + if (!p || !user) return; while (i < messages.length) { let event = messages[i]; - let k = event.author.id === user.id ? event.recipient.pubkey : event.author.pubkey; + i++; + + if (!(event.author && event.recipient)) continue; + + let k = event.author.id === user.id ? event.recipient?.pubkey : event.author.pubkey; if (!keys.has(k)) { keys.add(k); event.content = await decrypt({ event, user }); if (event.content) latest.push(event); } - i++; } latest = latest; ready = true; }; + + let i; + let o; + + rate.subscribe((n) => { + if (!user?.currency) return; + clearInterval(i); + + let r = ((rates[user.currency] / rates['USD']) * n).toFixed(2); + if (!o) o = r; + + let t = 0; + let d = o - r; + + i = setInterval(() => { + $animatedRate = (o - d * ease(t / 100)).toFixed(2); + if (t > 80) (o = r) && clearInterval(i); + t++; + }, 10); + });
diff --git a/src/routes/(app)/[username]/dashboard/+page.server.js b/src/routes/(app)/[username]/dashboard/+page.server.js deleted file mode 100644 index ae66a20d..00000000 --- a/src/routes/(app)/[username]/dashboard/+page.server.js +++ /dev/null @@ -1,4 +0,0 @@ -import { redirect } from '@sveltejs/kit'; -export async function load({ params: { username } }) { - throw redirect(301, `/${username}`); -} diff --git a/src/routes/(app)/[username]/dashboard/+page.svelte b/src/routes/(app)/[username]/dashboard/+page.svelte deleted file mode 100644 index d8761ea9..00000000 --- a/src/routes/(app)/[username]/dashboard/+page.svelte +++ /dev/null @@ -1,163 +0,0 @@ - - -
-
-
- {$selectedRate ? f(accountBalanceFiat, user.currency) : $t('user.dashboard.fetchingRate')} -
- -
- ⚡️{s(user.balance)} -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
-
-
1
- Bitcoin -
-
= {f(animatedRate, user.currency)}
-
-
-
-
⚡️{s((1 * sats) / animatedRate)} =
-
{f(1, user.currency)}
-
-
-
diff --git a/src/routes/(app)/[username]/invoice/[hash]/+layout.server.js b/src/routes/(app)/[username]/invoice/[hash]/+layout.server.js index 7cf87e14..04d413bb 100644 --- a/src/routes/(app)/[username]/invoice/[hash]/+layout.server.js +++ b/src/routes/(app)/[username]/invoice/[hash]/+layout.server.js @@ -12,10 +12,12 @@ export async function load({ depends, params, url, parent }) { if (user && invoice.uid !== user.id && !url.pathname.includes('tip')) throw redirect(307, `/send/invoice/${hash}`); - let { amount, received } = invoice; + let { amount, pending, received } = invoice; amount = parseInt(amount); - let paid = (!amount && received) || (amount > 0 && received >= amount); + console.log("PENDING", pending) + + let paid = (!amount && received) || (amount > 0 && (pending >= amount || received >= amount)); if (paid && !url.pathname.endsWith('paid')) throw redirect(307, `/${params.username}/invoice/${hash}/paid`); diff --git a/src/routes/(app)/[username]/invoice/[hash]/paid/+page.svelte b/src/routes/(app)/[username]/invoice/[hash]/paid/+page.svelte index 4d7aae51..c9619cee 100644 --- a/src/routes/(app)/[username]/invoice/[hash]/paid/+page.svelte +++ b/src/routes/(app)/[username]/invoice/[hash]/paid/+page.svelte @@ -21,7 +21,7 @@ {#if received}

{$t('invoice.paymentSuccessful')}

- {f(fiat(received, rate), currency)} + {f(fiat(received - tip, rate), currency)} {#if tip} + {f(fiat(tip, rate), currency)} @@ -29,7 +29,7 @@ {/if}

- ⚡️{s(received)} + ⚡️{s(received - tip)} {#if tip} @@ -42,13 +42,13 @@ {#if pending}

Payment detected

- {f(fiat(pending, rate), currency)} + {f(fiat(pending - tip, rate), currency)} {#if tip} + {f(fiat(tip, rate), currency)} {/if}

- ⚡️{s(pending)} + ⚡️{s(pending - tip)} {#if tip} + ⚡️{s(tip)} diff --git a/src/routes/(app)/buy/+page.svelte b/src/routes/(app)/buy/+page.svelte index 2f556ada..22e7e9ec 100644 --- a/src/routes/(app)/buy/+page.svelte +++ b/src/routes/(app)/buy/+page.svelte @@ -1,7 +1,7 @@
@@ -141,7 +123,6 @@
1
Bitcoin
-
= {f($animatedRate, currency)}

3% credit card fee applies

diff --git a/src/routes/(app)/launch/purchase/+page.svelte b/src/routes/(app)/launch/purchase/+page.svelte index 3273752a..fbaa58c0 100644 --- a/src/routes/(app)/launch/purchase/+page.svelte +++ b/src/routes/(app)/launch/purchase/+page.svelte @@ -1,7 +1,6 @@