aboutsummaryrefslogtreecommitdiffstats
path: root/packages/instant/src/util/balance.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/instant/src/util/balance.ts')
-rw-r--r--packages/instant/src/util/balance.ts26
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;
},
};