aboutsummaryrefslogtreecommitdiffstats
path: root/app/components/bitcoin-price.tsx
blob: af837d9e1b5ecdfaada9dcd2da41347b8b548379 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
"use client";

import { useEffect, useState } from "react";
import { BitcoinPrice as btcPrice } from "../utils/bitcoin-price";

export const BitcoinPrice = () => {
  const [isLoading, setLoading] = useState(false);
  const bitcoinPrice = btcPrice();

  const formatCurrency = (val: string) => {
    const n = parseFloat(val);
    const formatter = new Intl.NumberFormat("en-US", {
      style: "currency",
      currency: "USD",
      maximumFractionDigits: 0,
    });

    return formatter.format(n);
  };

  useEffect(() => setLoading(!bitcoinPrice), [bitcoinPrice]);

  if (isLoading || !bitcoinPrice) return <p>Loading...</p>;

  return <div>Bitcoin price: {formatCurrency(bitcoinPrice)}</div>;
};