diff --git a/explorer-nextjs/src/components/staking/OriginalStakeCard.tsx b/explorer-nextjs/src/components/staking/OriginalStakeCard.tsx index 62a88267fc..b0a25c50b9 100644 --- a/explorer-nextjs/src/components/staking/OriginalStakeCard.tsx +++ b/explorer-nextjs/src/components/staking/OriginalStakeCard.tsx @@ -1,5 +1,7 @@ "use client"; +import type { ObservatoryBalance } from "@/app/api/types"; +import { DATA_OBSERVATORY_BALANCES_URL } from "@/app/api/urls"; import { useNymClient } from "@/hooks/useNymClient"; import { formatBigNum } from "@/utils/formatBigNumbers"; import { Typography } from "@mui/material"; @@ -8,24 +10,32 @@ import ExplorerCard from "../cards/ExplorerCard"; const OriginalStakeCard = () => { const [origialStake, setOriginalStake] = useState(0); - const { nymClient, address } = useNymClient(); + + const { address } = useNymClient(); useEffect(() => { - const getDelegations = async () => { - if (!nymClient || !address) return; + if (!address) return; - const delegations = await nymClient?.getDelegatorDelegations({ - delegator: address, + const fetchBalances = async () => { + const data = await fetch(`${DATA_OBSERVATORY_BALANCES_URL}/${address}`, { + headers: { + Accept: "application/json", + "Content-Type": "application/json; charset=utf-8", + }, + next: { revalidate: 60 }, + // refresh event list cache at given interval }); + const balances: ObservatoryBalance = await data.json(); - const totaluNYMStake = delegations.delegations.reduce((acc, curr) => { - return acc + Number(curr.amount.amount); - }, 0); - - setOriginalStake(totaluNYMStake); + return setOriginalStake(balances.delegated.amount); }; - getDelegations(); - }, [address, nymClient]); + + fetchBalances(); + }, [address]); + + if (!address) { + return null; + } return ( { - const [totalStakerRewards, setTotalStakerRewards] = useState(); - const { nymClient, address } = useNymClient(); + const [totalStakerRewards, setTotalStakerRewards] = useState(0); + const { address } = useNymClient(); useEffect(() => { - if (!nymClient || !address) return; + if (!address) return; const fetchBalances = async () => { const data = await fetch(`${DATA_OBSERVATORY_BALANCES_URL}/${address}`, { @@ -23,16 +23,12 @@ const TotalRewardsCard = () => { // refresh event list cache at given interval }); const balances: ObservatoryBalance = await data.json(); - console.log("balances :>> ", balances); - const stakerRewards = formatBigNum( - +balances.rewards.staking_rewards.amount / 1_000_000, - ); - return setTotalStakerRewards(stakerRewards); + return setTotalStakerRewards(balances.rewards.staking_rewards.amount); }; fetchBalances(); - }, [address, nymClient]); + }, [address]); if (!address) { return null; @@ -43,7 +39,7 @@ const TotalRewardsCard = () => { variant="h3" sx={{ color: "pine.950", wordWrap: "break-word", maxWidth: "95%" }} > - {totalStakerRewards || 0} NYM + {`${formatBigNum(totalStakerRewards / 1_000_000)} NYM`} ); diff --git a/explorer-nextjs/src/components/staking/TotalStakeCard.tsx b/explorer-nextjs/src/components/staking/TotalStakeCard.tsx index dc7de03352..e13d69388d 100644 --- a/explorer-nextjs/src/components/staking/TotalStakeCard.tsx +++ b/explorer-nextjs/src/components/staking/TotalStakeCard.tsx @@ -1,16 +1,50 @@ "use client"; +import type { ObservatoryBalance } from "@/app/api/types"; +import { DATA_OBSERVATORY_BALANCES_URL } from "@/app/api/urls"; +import { useNymClient } from "@/hooks/useNymClient"; +import { formatBigNum } from "@/utils/formatBigNumbers"; import { Typography } from "@mui/material"; +import { useEffect, useState } from "react"; import ExplorerCard from "../cards/ExplorerCard"; const TotalStakeCard = () => { + const [totalStake, setTotalStake] = useState(0); + + const { address } = useNymClient(); + + useEffect(() => { + if (!address) return; + + const fetchBalances = async () => { + const data = await fetch(`${DATA_OBSERVATORY_BALANCES_URL}/${address}`, { + headers: { + Accept: "application/json", + "Content-Type": "application/json; charset=utf-8", + }, + next: { revalidate: 60 }, + // refresh event list cache at given interval + }); + const balances: ObservatoryBalance = await data.json(); + + return setTotalStake( + balances.rewards.staking_rewards.amount + balances.delegated.amount, + ); + }; + + fetchBalances(); + }, [address]); + + if (!address) { + return null; + } return ( - - NYM + {`${formatBigNum(totalStake / 1_000_000)} NYM`} );