Fix bug that occurs when token metadata decimals is undefined. (#1426)

* Fix bug that occurs when token metadata decimals is undefined.

* move toBigNumberOrNull to utils
This commit is contained in:
Alex Browne
2018-12-12 16:49:01 -08:00
committed by GitHub
parent f9d436cd21
commit 3a8f3e01b6
2 changed files with 18 additions and 4 deletions

View File

@@ -1,9 +1,8 @@
import { BigNumber } from '@0x/utils';
import * as R from 'ramda';
import { MetamaskTrustedTokenMeta, ZeroExTrustedTokenMeta } from '../../data_sources/trusted_tokens';
import { TokenMetadata } from '../../entities';
import {} from '../../utils';
import { toBigNumberOrNull } from '../../utils';
/**
* Parses Metamask's trusted tokens list.
@@ -26,7 +25,7 @@ function parseMetamaskTrustedToken(resp: MetamaskTrustedTokenMeta, address: stri
const trustedToken = new TokenMetadata();
trustedToken.address = address;
trustedToken.decimals = new BigNumber(resp.decimals);
trustedToken.decimals = toBigNumberOrNull(resp.decimals);
trustedToken.symbol = resp.symbol;
trustedToken.name = resp.name;
trustedToken.authority = 'metamask';
@@ -38,7 +37,7 @@ function parseZeroExTrustedToken(resp: ZeroExTrustedTokenMeta): TokenMetadata {
const trustedToken = new TokenMetadata();
trustedToken.address = resp.address;
trustedToken.decimals = resp.decimals ? new BigNumber(resp.decimals) : null;
trustedToken.decimals = toBigNumberOrNull(resp.decimals);
trustedToken.symbol = resp.symbol;
trustedToken.name = resp.name;
trustedToken.authority = '0x';

View File

@@ -14,6 +14,21 @@ export function bigNumbertoStringOrNull(n: BigNumber): string | null {
return n.toString();
}
/**
* If value is null or undefined, returns null. Otherwise converts value to a
* BigNumber.
* @param value A string or number to be converted to a BigNumber
*/
export function toBigNumberOrNull(value: string | number | null): BigNumber | null {
switch (value) {
case null:
case undefined:
return null;
default:
return new BigNumber(value);
}
}
/**
* Logs an error by intelligently checking for `message` and `stack` properties.
* Intended for use with top-level immediately invoked asynchronous functions.