acccount for no address

This commit is contained in:
Steve Klebanoff
2018-10-26 15:34:35 -07:00
parent e1ae551560
commit 86febc3cce
3 changed files with 19 additions and 11 deletions

View File

@@ -82,7 +82,7 @@ const updateBuyQuoteAsync = async (
// set error if user doesn't have appropriate balance
const takerAddress = await getBestAddress();
await balanceUtil.checkSufficientBalanceAndFlashError(takerAddress, newBuyQuote, web3Wrapper, dispatch);
await balanceUtil.checkInsufficientEthBalanceAndFlashError(takerAddress, newBuyQuote, web3Wrapper, dispatch);
};
const debouncedUpdateBuyQuoteAsync = _.debounce(updateBuyQuoteAsync, 200, { trailing: true });

View File

@@ -1,6 +1,6 @@
import { web3Wrapper } from '../util/web3_wrapper';
export const getBestAddress = async (): Promise<string> => {
export const getBestAddress = async (): Promise<string | undefined> => {
const addresses = await web3Wrapper.getAvailableAddressesAsync();
return addresses[0];
};

View File

@@ -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;
},
};