diff options
Diffstat (limited to 'packages/instant/src/util/balance.ts')
-rw-r--r-- | packages/instant/src/util/balance.ts | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/packages/instant/src/util/balance.ts b/packages/instant/src/util/balance.ts index d442da9e0..954dc7156 100644 --- a/packages/instant/src/util/balance.ts +++ b/packages/instant/src/util/balance.ts @@ -1,30 +1,38 @@ import { BuyQuote } from '@0x/asset-buyer'; import { Web3Wrapper } from '@0x/web3-wrapper'; +import * as _ from 'lodash'; import { Dispatch } from 'redux'; import { ZeroExInstantError } from '../types'; import { errorUtil } from './error'; +const hasSufficientFunds = async (takerAddress: string | undefined, buyQuote: BuyQuote, web3Wrapper: Web3Wrapper) => { + if (_.isUndefined(takerAddress)) { + return false; + } + const balanceWei = await web3Wrapper.getBalanceInWeiAsync(takerAddress); + return balanceWei >= buyQuote.worstCaseQuoteInfo.totalEthAmount; +}; + export const balanceUtil = { /** * Checks to see if user has enough balance to buy assets * If they do not, flash an error and return false * If they do, return true */ - checkSufficientBalanceAndFlashError: async ( - takerAddress: string, + checkInsufficientEthBalanceAndFlashError: async ( + takerAddress: string | undefined, buyQuote: BuyQuote, web3Wrapper: Web3Wrapper, dispatch: Dispatch, ) => { - const balanceWei = await web3Wrapper.getBalanceInWeiAsync(takerAddress); - - if (balanceWei < buyQuote.worstCaseQuoteInfo.totalEthAmount) { - const balanceError = new Error(ZeroExInstantError.InsufficientBalance); - errorUtil.errorFlasher.flashNewError(dispatch, balanceError); - return false; + const hasEnoughFunds = await hasSufficientFunds(takerAddress, buyQuote, web3Wrapper); + if (hasEnoughFunds) { + return true; } - return true; + const balanceError = new Error(ZeroExInstantError.InsufficientBalance); + errorUtil.errorFlasher.flashNewError(dispatch, balanceError); + return false; }, }; |