mirror of
https://github.com/trezor/trezor-wallet
synced 2025-01-07 14:50:52 +00:00
Merge pull request #376 from trezor/fix/send-nan-eth
Fix/NaN in Send forms
This commit is contained in:
commit
7c8564d69c
@ -347,7 +347,12 @@ export const calculateFee = (gasPrice: string, gasLimit: string): string => {
|
||||
|
||||
export const calculateTotal = (amount: string, gasPrice: string, gasLimit: string): string => {
|
||||
try {
|
||||
return new BigNumber(amount).plus(calculateFee(gasPrice, gasLimit)).toFixed();
|
||||
const bAmount = new BigNumber(amount);
|
||||
// BigNumber() returns NaN on non-numeric string
|
||||
if (bAmount.isNaN()) {
|
||||
throw new Error('Amount is not a number');
|
||||
}
|
||||
return bAmount.plus(calculateFee(gasPrice, gasLimit)).toFixed();
|
||||
} catch (error) {
|
||||
return '0';
|
||||
}
|
||||
|
@ -300,7 +300,12 @@ export const destinationTagValidation = ($state: State): PayloadAction<State> =>
|
||||
|
||||
const calculateTotal = (amount: string, fee: string): string => {
|
||||
try {
|
||||
return new BigNumber(amount).plus(fee).toFixed();
|
||||
const bAmount = new BigNumber(amount);
|
||||
// BigNumber() returns NaN on non-numeric string
|
||||
if (bAmount.isNaN()) {
|
||||
throw new Error('Amount is not a number');
|
||||
}
|
||||
return bAmount.plus(fee).toFixed();
|
||||
} catch (error) {
|
||||
return '0';
|
||||
}
|
||||
|
@ -37,6 +37,7 @@ declare module 'bignumber.js' {
|
||||
isLessThan(n: $npm$big$number$object): boolean;
|
||||
lte(n: $npm$big$number$object): boolean;
|
||||
isLessThanOrEqualTo(n: $npm$big$number$object): boolean;
|
||||
isNaN(): boolean;
|
||||
minus(n: $npm$big$number$object): T_BigNumber;
|
||||
mod(n: $npm$big$number$object): T_BigNumber;
|
||||
plus(n: $npm$big$number$object): T_BigNumber;
|
||||
|
@ -56,7 +56,12 @@ export const hexToString = (hex: string): string => {
|
||||
|
||||
export const toDecimalAmount = (amount: string | number, decimals: number): string => {
|
||||
try {
|
||||
return new BigNumber(amount).div(10 ** decimals).toString(10);
|
||||
const bAmount = new BigNumber(amount);
|
||||
// BigNumber() returns NaN on non-numeric string
|
||||
if (bAmount.isNaN()) {
|
||||
throw new Error('Amount is not a number');
|
||||
}
|
||||
return bAmount.div(10 ** decimals).toString(10);
|
||||
} catch (error) {
|
||||
return '0';
|
||||
}
|
||||
@ -64,7 +69,12 @@ export const toDecimalAmount = (amount: string | number, decimals: number): stri
|
||||
|
||||
export const fromDecimalAmount = (amount: string | number, decimals: number): string => {
|
||||
try {
|
||||
return new BigNumber(amount).times(10 ** decimals).toString(10);
|
||||
const bAmount = new BigNumber(amount);
|
||||
// BigNumber() returns NaN on non-numeric string
|
||||
if (bAmount.isNaN()) {
|
||||
throw new Error('Amount is not a number');
|
||||
}
|
||||
return bAmount.times(10 ** decimals).toString(10);
|
||||
} catch (error) {
|
||||
return '0';
|
||||
}
|
||||
|
@ -248,7 +248,10 @@ const AccountSend = (props: Props) => {
|
||||
}
|
||||
|
||||
let isSendButtonDisabled: boolean = Object.keys(errors).length > 0 || total === '0' || amount.length === 0 || address.length === 0 || sending;
|
||||
let sendButtonText: string = ` ${total} ${network.symbol}`;
|
||||
let sendButtonText: string = 'Send';
|
||||
if (total !== '0') {
|
||||
sendButtonText = `${sendButtonText} ${total} ${network.symbol}`;
|
||||
}
|
||||
|
||||
if (!device.connected) {
|
||||
sendButtonText = 'Device is not connected';
|
||||
|
Loading…
Reference in New Issue
Block a user