diff --git a/src/components/tst-staking/StakingRewardsList.jsx b/src/components/tst-staking/StakingRewardsList.jsx index a58cc33..b012b1f 100644 --- a/src/components/tst-staking/StakingRewardsList.jsx +++ b/src/components/tst-staking/StakingRewardsList.jsx @@ -8,17 +8,6 @@ import CenterLoader from "../ui/CenterLoader"; import ClaimingRewardsModal from "./ClaimingRewardsModal"; -const formatUSD = (value) => { - if (value >= 0) { - return new Intl.NumberFormat('en-US', { - style: 'currency', - currency: 'USD', - minimumFractionDigits: 2, - maximumFractionDigits: 2 - }).format(Math.abs(value)); - } -}; - const StakingRewardsList = ({ stakedSince, poolRewardsLoading, @@ -43,15 +32,17 @@ const StakingRewardsList = ({ const rewardsWithPrices = rewardData.map(reward => { const useAmount = ethers.formatUnits(reward.amount, reward.decimals); + const useRate = ethers.formatUnits(reward.dailyReward, reward.decimals); const price = latestPrices[reward.asset] || 1; // Default to 1 for stablecoins const usdValue = parseFloat(useAmount) * price; + const usdRate = parseFloat(useRate) * price; return { ...reward, usdValue: usdValue, + usdRate: usdRate, price: price }; }) - const rows = rewardsWithPrices || []; let noRewards = true; @@ -87,7 +78,6 @@ const StakingRewardsList = ({ Asset Amount - Value (USD) Daily Rate Per TST @@ -99,6 +89,7 @@ const StakingRewardsList = ({ const symbol = asset?.asset; const dailyReward = asset?.dailyReward || 0n; const value = asset?.usdValue || 0; + const rate = asset?.usdRate || 0; return( @@ -106,13 +97,16 @@ const StakingRewardsList = ({ {symbol} - {ethers.formatUnits(amount, decimals)} + {ethers.formatUnits(amount, decimals)}
+ + ~${value.toFixed(8)} + - {formatUSD(value)} - - - {ethers.formatUnits(dailyReward, decimals)} + {ethers.formatUnits(dailyReward, decimals)}
+ + ~${rate.toFixed(8)} + )} diff --git a/src/components/tst-staking/StakingSummary.jsx b/src/components/tst-staking/StakingSummary.jsx index 4dda213..3b9e2d0 100644 --- a/src/components/tst-staking/StakingSummary.jsx +++ b/src/components/tst-staking/StakingSummary.jsx @@ -211,34 +211,47 @@ const StakingSummary = ({ } function getDaysStaked() { - const start = moment.unix((Number(rawStakedSince))); + let start = moment.unix((Number(rawStakedSince))); const today = moment(); + if (!rawStakedSince) { + start = today; + } const since = today.diff(start, 'days'); return since; } + // const calculateSimpleAPY = (stakedAmount, totalRewardsValue, daysStaked) => { + // const dailyEarnings = Number(totalRewardsValue / daysStaked) || 0; + // const annualEarningsPerTST = (dailyEarnings * 365) / Number(stakedAmount) || 0; + // return annualEarningsPerTST * 100; + // } const calculateSimpleAPY = (stakedAmount, totalRewardsValue, daysStaked) => { - const dailyEarnings = totalRewardsValue / daysStaked; - const annualEarningsPerTST = (dailyEarnings * 365) / stakedAmount; - // console.log(123123, stakedAmount, totalRewardsValue, daysStaked) - return annualEarningsPerTST * 100; + const dailyEarnings = totalRewardsValue || 0; + const annualEarningsPerTST = (dailyEarnings * 365) / Number(stakedAmount) || 0; + + return annualEarningsPerTST; } const rewardsWithPrices = rewardsData.map(reward => { const useAmount = ethers.formatUnits(reward.amount, reward.decimals); + const useRate = ethers.formatUnits(reward.dailyReward, reward.decimals); const price = latestPrices[reward.asset] || 1; // Default to 1 for stablecoins const usdValue = parseFloat(useAmount) * price; + const usdRate = parseFloat(useRate) * price; return { ...reward, usdValue: usdValue, + usdRate: usdRate, price: price }; }) - const totalValue = rewardsWithPrices.reduce((sum, reward) => sum + reward.usdValue, 0) || 0; + + const totalValueUSD = rewardsWithPrices.reduce((sum, reward) => sum + reward.usdValue, 0) || 0; + const totalRateUSD = rewardsWithPrices.reduce((sum, reward) => sum + reward.usdRate, 0) || 0; const daysStaked = getDaysStaked() || 0; - const dailyEarnings = (totalValue / daysStaked) || 0; + const dailyEarnings = (totalRateUSD / daysStaked) || 0; const monthlyProjection = (dailyEarnings * 30) || 0; const currentTier = getCurrentTier(stakedAmount); @@ -248,7 +261,7 @@ const StakingSummary = ({ if (nextTier?.minAmount) { progress = (stakedAmount / nextTier.minAmount) * 100; } - const apyDisplay = calculateSimpleAPY(stakedAmount, totalValue, daysStaked) + '%' || '0%'; + const apyDisplay = calculateSimpleAPY(stakedAmount, totalRateUSD, daysStaked) + '%' || '0%'; let stakeRatio = 'TODO.DOTO'; @@ -275,7 +288,7 @@ const StakingSummary = ({ Participate in protocol governance -
+
@@ -286,7 +299,7 @@ const StakingSummary = ({
-
+ {/*
Historical APY @@ -304,7 +317,7 @@ const StakingSummary = ({ 0%
-
+
*/}
@@ -343,7 +356,7 @@ const StakingSummary = ({ Total Value Accrued - {formatUSD(totalValue)} + {formatUSD(totalValueUSD)}
@@ -381,7 +394,7 @@ const StakingSummary = ({ {/*
*/} -
+
@@ -392,7 +405,7 @@ const StakingSummary = ({
-
+ {/*
Historical APY @@ -410,7 +423,7 @@ const StakingSummary = ({ {apyDisplay}
-
+
*/} {/*
@@ -474,7 +487,7 @@ const StakingSummary = ({ Total Value Accrued - {formatUSD(totalValue)} + {formatUSD(totalValueUSD)} Current market prices