From b18828c0188ffe3b85b1132b480e4849cfc1039f Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Wed, 9 Nov 2022 16:26:30 -0800 Subject: unit reference on dashboard --- src/routes/(app)/+layout.svelte | 1 + src/routes/(app)/[username]/dashboard/+page.svelte | 64 ++++++++++++++++------ .../(app)/[username]/settings/[...tab]/_pos.svelte | 2 + 3 files changed, 51 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/routes/(app)/+layout.svelte b/src/routes/(app)/+layout.svelte index 3d03e199..4cd08ab4 100644 --- a/src/routes/(app)/+layout.svelte +++ b/src/routes/(app)/+layout.svelte @@ -25,6 +25,7 @@ }; $: $selectedRate = r * (rates[u?.currency || 'USD'] / rates.USD); + $: $selectedRate = $rate * (rates[u?.currency || 'USD'] / rates.USD); onMount(() => { let localStorageLocale = localStorage.getItem(localeLocalStorageKey); diff --git a/src/routes/(app)/[username]/dashboard/+page.svelte b/src/routes/(app)/[username]/dashboard/+page.svelte index 43879fcb..3a90968c 100644 --- a/src/routes/(app)/[username]/dashboard/+page.svelte +++ b/src/routes/(app)/[username]/dashboard/+page.svelte @@ -9,8 +9,10 @@ export let data; let ease = (t) => (t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t); - let interval; + let interval, rateInterval; + let oldRate = $selectedRate; + let animatedRate = oldRate; $: animateRate($selectedRate); let animateRate = (newRate) => { if (!accountBalanceFiat) return; @@ -18,6 +20,17 @@ let newBalance = (user.account.balance * newRate) / sats; let oldBalance = parseFloat(accountBalanceFiat); let diff = oldBalance - newBalance; + let rateDiff = oldRate - newRate; + + clearInterval(rateInterval); + rateInterval = setInterval(() => { + let delta = rateDiff * ease(t / 100); + animatedRate = (oldRate - delta).toFixed(2); + if (t > 80) clearInterval(interval); + t++; + }, 10); + + oldRate = newRate; clearInterval(interval); interval = setInterval(() => { @@ -42,35 +55,54 @@ $: accountBalanceBtc = user.account.balance / sats; -
-
- {$selectedRate ? f(accountBalanceFiat, user.currency) : $t('user.dashboard.fetchingRate')} -
+
+
+
+ {$selectedRate ? f(accountBalanceFiat, user.currency) : $t('user.dashboard.fetchingRate')} +
-
- ⚡️{s(user.account.balance)} +
+ ⚡️{s(user.account.balance)} +
-
+ + +
+
+
+
1
+ +
+
= {f(animatedRate, user.currency)}
+
+
+
{sat(sats)} =
+
+
1
+ +
+
diff --git a/src/routes/(app)/[username]/settings/[...tab]/_pos.svelte b/src/routes/(app)/[username]/settings/[...tab]/_pos.svelte index ccbeeff4..d5e17786 100644 --- a/src/routes/(app)/[username]/settings/[...tab]/_pos.svelte +++ b/src/routes/(app)/[username]/settings/[...tab]/_pos.svelte @@ -5,6 +5,8 @@ import { page } from '$app/stores'; let { rates, user } = $page.data; + + $: ({ rates, user } = $page.data); const fiats = Object.keys(rates); -- cgit v1.2.3