From 6d3a28a8c2eba472b19982da6f931a0bc6ffe07c Mon Sep 17 00:00:00 2001 From: Hermes Admin Date: Tue, 26 May 2026 06:07:13 +0800 Subject: [PATCH] fix: guard pool metrics against NaN/Infinity/undefined values (fixes #6) - Add > 0 check in feeAPY calculation to prevent division by zero - Add safeMetric() helper for null-safe metric display - Show '-' instead of NaN/Infinity/undefined in all pool metric cells - Use strict equality (> 0 instead of == 0) for % of Pool calculation --- src/components/pool/Pools.svelte | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/components/pool/Pools.svelte b/src/components/pool/Pools.svelte index 2ad0552..adee035 100644 --- a/src/components/pool/Pools.svelte +++ b/src/components/pool/Pools.svelte @@ -31,8 +31,14 @@ function setFeeAPYs(_balances) { if (!_balances) return; - if (_balances['ETH']) feeAPY['ETH'] = 100 * 95 * 12 / _balances['ETH']; // Approx 95 ETH per month in fees - if (_balances['USDC']) feeAPY['USDC'] = 100 * 100000 * 12 / _balances['USDC']; // Approx 100,000 USDC per month in fees + if (_balances['ETH'] && _balances['ETH'] > 0) feeAPY['ETH'] = 100 * 95 * 12 / _balances['ETH']; // Approx 95 ETH per month in fees + if (_balances['USDC'] && _balances['USDC'] > 0) feeAPY['USDC'] = 100 * 100000 * 12 / _balances['USDC']; // Approx 100,000 USDC per month in fees + } + + // Guard against NaN/Infinity/undefined in metric display + function safeMetric(val) { + if (val === undefined || val === null || val === '' || isNaN(val) || !isFinite(val)) return '-'; + return val; } $: setFeeAPYs($poolBalances); @@ -161,18 +167,18 @@
% of Pool
- {#each assets as asset} + {#each assets as asset}
{asset}
-
{numberWithCommas($poolBalances[asset]) || 0}
${formatForDisplay(getAmountInUsd(asset, $poolBalances[asset], $prices))}
-
{formatForDisplay(feeAPY[asset])}%
+
{safeMetric(numberWithCommas($poolBalances[asset])) || 0}
${formatForDisplay(getAmountInUsd(asset, $poolBalances[asset], $prices))}
+
{feeAPY[asset] ? formatForDisplay(feeAPY[asset]) + '%' : '-'}
30%+
-
{numberWithCommas($globalUPLs[asset])}
-
{numberWithCommas($bufferBalances[asset])}
-
{numberWithCommas($poolStakes[asset]) || 0}
${getAmountInUsd(asset, $poolStakes[asset], $prices)}
-
{$poolBalances[asset] == 0 ? 'N/A' : formatForDisplay(($poolStakes[asset])/$poolBalances[asset] *100 )+ '%'}
+
{safeMetric($globalUPLs[asset])}
+
{safeMetric($bufferBalances[asset])}
+
{safeMetric(numberWithCommas($poolStakes[asset])) || 0}
${getAmountInUsd(asset, $poolStakes[asset], $prices)}
+
{$poolBalances[asset] > 0 ? formatForDisplay(($poolStakes[asset])/$poolBalances[asset] * 100) + '%' : 'N/A'}
- {/each} + {/each}
Total
${numberWithCommas(getTotalAmountInUsd($poolBalances, $prices))}