diff options
author | Jacob Evans <dekz@dekz.net> | 2018-07-03 14:58:08 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-03 14:58:08 +0800 |
commit | 499915042ea644bec7266e5b4f09b624e55de6f1 (patch) | |
tree | ced473d564e65f18f2647e1009f7752ca8532865 /packages/website/ts/utils/utils.ts | |
parent | 1a901554cceab03ead6129a1f41d87349fc3fe07 (diff) | |
parent | 328da21420e54ac0f2d9e2d7bcb894cc13f3bea8 (diff) | |
download | dexon-sol-tools-499915042ea644bec7266e5b4f09b624e55de6f1.tar dexon-sol-tools-499915042ea644bec7266e5b4f09b624e55de6f1.tar.gz dexon-sol-tools-499915042ea644bec7266e5b4f09b624e55de6f1.tar.bz2 dexon-sol-tools-499915042ea644bec7266e5b4f09b624e55de6f1.tar.lz dexon-sol-tools-499915042ea644bec7266e5b4f09b624e55de6f1.tar.xz dexon-sol-tools-499915042ea644bec7266e5b4f09b624e55de6f1.tar.zst dexon-sol-tools-499915042ea644bec7266e5b4f09b624e55de6f1.zip |
Merge branch 'v2-prototype' into eth-lightwallet-subprovider-final
Diffstat (limited to 'packages/website/ts/utils/utils.ts')
-rw-r--r-- | packages/website/ts/utils/utils.ts | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/packages/website/ts/utils/utils.ts b/packages/website/ts/utils/utils.ts index 726e1815f..fc7901463 100644 --- a/packages/website/ts/utils/utils.ts +++ b/packages/website/ts/utils/utils.ts @@ -8,6 +8,8 @@ import * as bowser from 'bowser'; import deepEqual = require('deep-equal'); import * as _ from 'lodash'; import * as moment from 'moment'; +import * as numeral from 'numeral'; + import { AccountState, BlockchainCallErrs, @@ -324,6 +326,7 @@ export const utils = { getProviderType(provider: Provider): Providers | string { const constructorName = provider.constructor.name; let parsedProviderName = constructorName; + // https://ethereum.stackexchange.com/questions/24266/elegant-way-to-detect-current-provider-int-web3-js switch (constructorName) { case 'EthereumProvider': parsedProviderName = Providers.Mist; @@ -337,6 +340,10 @@ export const utils = { parsedProviderName = Providers.Parity; } else if ((provider as any).isMetaMask) { parsedProviderName = Providers.Metamask; + } else if (!_.isUndefined(_.get(window, 'SOFA'))) { + parsedProviderName = Providers.Toshi; + } else if (!_.isUndefined(_.get(window, '__CIPHER__'))) { + parsedProviderName = Providers.Cipher; } return parsedProviderName; }, @@ -380,10 +387,20 @@ export const utils = { }, getFormattedAmount(amount: BigNumber, decimals: number, symbol: string): string { const unitAmount = Web3Wrapper.toUnitAmount(amount, decimals); - const precision = Math.min(constants.TOKEN_AMOUNT_DISPLAY_PRECISION, unitAmount.decimalPlaces()); - const formattedAmount = unitAmount.toFixed(precision); + // if the unit amount is less than 1, show the natural number of decimal places with a max of 4 + // if the unit amount is greater than or equal to 1, show only 2 decimal places + const precision = unitAmount.lt(1) + ? Math.min(constants.TOKEN_AMOUNT_DISPLAY_PRECISION, unitAmount.decimalPlaces()) + : 2; + const format = `0,0.${_.repeat('0', precision)}`; + const formattedAmount = numeral(unitAmount).format(format); return `${formattedAmount} ${symbol}`; }, + getUsdValueFormattedAmount(amount: BigNumber, decimals: number, price: BigNumber): string { + const unitAmount = Web3Wrapper.toUnitAmount(amount, decimals); + const value = unitAmount.mul(price); + return numeral(value).format(constants.NUMERAL_USD_FORMAT); + }, openUrl(url: string): void { window.open(url, '_blank'); }, |