diff options
author | Steve Klebanoff <steve@0xproject.com> | 2019-01-10 08:29:11 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-10 08:29:11 +0800 |
commit | 6487fae1131eb6e9215c918f23bac317157f368b (patch) | |
tree | bc02d4b3b0b556b2e911f4ba2c60f4035fdd717e /packages/instant/src/util/asset.ts | |
parent | 87c287a5e26e89ee25dd43793415d00d4ddfd5fa (diff) | |
parent | fb3605026ef63ef6897010a52bf3f4c116cdf271 (diff) | |
download | dexon-sol-tools-6487fae1131eb6e9215c918f23bac317157f368b.tar dexon-sol-tools-6487fae1131eb6e9215c918f23bac317157f368b.tar.gz dexon-sol-tools-6487fae1131eb6e9215c918f23bac317157f368b.tar.bz2 dexon-sol-tools-6487fae1131eb6e9215c918f23bac317157f368b.tar.lz dexon-sol-tools-6487fae1131eb6e9215c918f23bac317157f368b.tar.xz dexon-sol-tools-6487fae1131eb6e9215c918f23bac317157f368b.tar.zst dexon-sol-tools-6487fae1131eb6e9215c918f23bac317157f368b.zip |
Merge pull request #1437 from 0xProject/feature/instant/tell-amount-available
[instant] Tell user how much of an asset is available
Diffstat (limited to 'packages/instant/src/util/asset.ts')
-rw-r--r-- | packages/instant/src/util/asset.ts | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/packages/instant/src/util/asset.ts b/packages/instant/src/util/asset.ts index faaeb7c22..b009a327f 100644 --- a/packages/instant/src/util/asset.ts +++ b/packages/instant/src/util/asset.ts @@ -1,8 +1,10 @@ -import { AssetBuyerError } from '@0x/asset-buyer'; +import { AssetBuyerError, InsufficientAssetLiquidityError } from '@0x/asset-buyer'; import { AssetProxyId, ObjectMap } from '@0x/types'; +import { BigNumber } from '@0x/utils'; +import { Web3Wrapper } from '@0x/web3-wrapper'; import * as _ from 'lodash'; -import { DEFAULT_UNKOWN_ASSET_NAME } from '../constants'; +import { BIG_NUMBER_ZERO, DEFAULT_UNKOWN_ASSET_NAME } from '../constants'; import { assetDataNetworkMapping } from '../data/asset_data_network_mapping'; import { Asset, AssetMetaData, ERC20Asset, Network, ZeroExInstantError } from '../types'; @@ -111,6 +113,21 @@ export const assetUtils = { assetBuyerErrorMessage: (asset: ERC20Asset, error: Error): string | undefined => { if (error.message === AssetBuyerError.InsufficientAssetLiquidity) { const assetName = assetUtils.bestNameForAsset(asset, 'of this asset'); + if ( + error instanceof InsufficientAssetLiquidityError && + error.amountAvailableToFill.greaterThan(BIG_NUMBER_ZERO) + ) { + const unitAmountAvailableToFill = Web3Wrapper.toUnitAmount( + error.amountAvailableToFill, + asset.metaData.decimals, + ); + const roundedUnitAmountAvailableToFill = unitAmountAvailableToFill.round(2, BigNumber.ROUND_DOWN); + + if (roundedUnitAmountAvailableToFill.greaterThan(BIG_NUMBER_ZERO)) { + return `There are only ${roundedUnitAmountAvailableToFill} ${assetName} available to buy`; + } + } + return `Not enough ${assetName} available`; } else if (error.message === AssetBuyerError.InsufficientZrxLiquidity) { return 'Not enough ZRX available'; |