Skip to content

Commit 9cdf88e

Browse files
authored
Merge pull request #1761 from balancednetwork/fix/fix-app-crash
Hotfix app crash
2 parents a705af2 + 9e8335b commit 9cdf88e

2 files changed

Lines changed: 15 additions & 10 deletions

File tree

apps/web/src/app/pages/trade/supply/_components/utils.tsx

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { Currency, CurrencyAmount, Fraction } from '@balancednetwork/sdk-core';
1+
import { Currency, CurrencyAmount } from '@balancednetwork/sdk-core';
22
import { t } from '@lingui/macro';
33
import BigNumber from 'bignumber.js';
44

55
import { ZERO } from '@/constants/misc';
66
import { PairData } from '@/queries/backendv2';
7-
import { formatBigNumber } from '@/utils';
7+
import { formatBigNumber, toFraction } from '@/utils';
88
import { formatBalance, formatSymbol, formatValue } from '@/utils/formatter';
99

1010
export function swapMessage(inputAmount: string, inputCurrency: string, outputAmount: string, outputCurrency: string) {
@@ -59,11 +59,7 @@ export function withdrawMessage(
5959
return { pendingMessage, successMessage, failureMessage };
6060
}
6161

62-
export const stakedFraction = stakedLPPercent => {
63-
const [stakedNumerator, stakedDenominator] = stakedLPPercent ? stakedLPPercent.toFraction() : [0, 1];
64-
const stakedFraction = new Fraction(stakedNumerator.toFixed(), stakedDenominator.toFixed());
65-
return stakedFraction;
66-
};
62+
export const stakedFraction = (stakedLPPercent?: BigNumber) => toFraction(stakedLPPercent);
6763

6864
export const totalSupply = (withdrawValue: CurrencyAmount<Currency>, suppliedValue?: CurrencyAmount<Currency>) =>
6965
!!withdrawValue ? suppliedValue?.subtract(withdrawValue) : suppliedValue;

apps/web/src/utils/index.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -237,8 +237,17 @@ export function toHex(value?: CurrencyAmount<Currency> | CurrencyAmount<Token>):
237237
return value ? `0x${value.quotient.toString(16)}` : '0x0';
238238
}
239239

240+
/** bignumber.js `toFraction()` returns a single BigNumber for NaN/±Infinity (`!xc`), not `[n, d]`. */
241+
function bignumberNumeratorDenominator(amount: BigNumber): [BigNumber, BigNumber] {
242+
if (!amount.isFinite()) {
243+
return [new BigNumber(0), new BigNumber(1)];
244+
}
245+
const frac = amount.toFraction();
246+
return Array.isArray(frac) ? frac : [frac, new BigNumber(1)];
247+
}
248+
240249
export function toCurrencyAmount(token: Token, amount: BigNumber): CurrencyAmount<Token> {
241-
const [amountNum, amountDeno] = amount.toFraction();
250+
const [amountNum, amountDeno] = bignumberNumeratorDenominator(amount);
242251
return CurrencyAmount.fromFractionalAmount(
243252
token,
244253
amountNum.times(TEN.pow(token.decimals)).toFixed(),
@@ -247,12 +256,12 @@ export function toCurrencyAmount(token: Token, amount: BigNumber): CurrencyAmoun
247256
}
248257

249258
export function toCurrencyAmountFromRawBN(token: Token, amount: BigNumber): CurrencyAmount<Token> {
250-
const [amountNum, amountDeno] = amount.toFraction();
259+
const [amountNum, amountDeno] = bignumberNumeratorDenominator(amount);
251260
return CurrencyAmount.fromFractionalAmount(token, amountNum.toFixed(), amountDeno.toFixed());
252261
}
253262

254263
export function toFraction(amount: BigNumber | undefined): Fraction {
255-
const [amountNum, amountDeno] = amount ? amount.toFraction() : [0, 1];
264+
const [amountNum, amountDeno] = amount ? bignumberNumeratorDenominator(amount) : [new BigNumber(0), new BigNumber(1)];
256265
return new Fraction(amountNum.toFixed(), amountDeno.toFixed());
257266
}
258267

0 commit comments

Comments
 (0)