From 553b55b793a6d025f1b9c97af7286268d201132d Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 17 Jul 2024 11:27:24 +0800 Subject: [PATCH] problem: value in USD not displayed --- src/components/MeritSummaryCard.svelte | 18 ++++++++++++++++-- src/lib/helpers.ts | 13 +++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/components/MeritSummaryCard.svelte b/src/components/MeritSummaryCard.svelte index 921e241..713eb73 100644 --- a/src/components/MeritSummaryCard.svelte +++ b/src/components/MeritSummaryCard.svelte @@ -11,7 +11,7 @@ import { Separator } from '$lib/components/ui/separator/index.js'; import * as Table from '@/components/ui/table'; import { Rocket, RocketATagFilter } from '@/event_helpers/rockets'; - import { getRocketURL, unixToRelativeTime } from '@/helpers'; + import { getCuckPrice, getRocketURL, unixToRelativeTime } from '@/helpers'; import { derived } from 'svelte/store'; import { goto } from '$app/navigation'; @@ -25,6 +25,7 @@ export let merit: MeritRequest; export let rocket: NDKEvent; + let cuckPrice: number | undefined = undefined; let result: VoteDirection | undefined; @@ -41,6 +42,18 @@ _votes.unsubscribe(); }); + $: { + if (!cuckPrice) { + getCuckPrice().then((data) => { + if (data instanceof Error) { + console.error(data); + } else { + cuckPrice = data; + } + }); + } + } + let votes = derived(_votes, ($_votes) => { return new MapOfVotes($_votes, parsedRocket, merit).Votes; }); @@ -136,7 +149,8 @@ Approximate value of {merit.Sats.toLocaleString()} sats in CuckLoserBucks - ${merit.Sats.toLocaleString()} + ${cuckPrice ? ((merit.Sats / 100000000) * cuckPrice).toFixed(2) : 'Loading'} diff --git a/src/lib/helpers.ts b/src/lib/helpers.ts index a3ae1c2..6d0b63e 100644 --- a/src/lib/helpers.ts +++ b/src/lib/helpers.ts @@ -56,3 +56,16 @@ export function unixToRelativeTime(timestamp: number): string { return formattedDate; } } + +export async function getCuckPrice(): Promise { + try { + var url = 'https://api.coindesk.com/v1/bpi/currentprice.json'; + var symbol = 'USD'; + const data = await fetch(url); + const json = await data.json(); + const cuckPrice = parseFloat(json.bpi[symbol].rate.replace(/,/g, '')); + return cuckPrice; + } catch (e) { + return e as Error; + } +}