Have heartbeat update not trigger errors
This commit is contained in:
		@@ -113,7 +113,8 @@ export class ZeroExInstantProvider extends React.Component<ZeroExInstantProvider
 | 
			
		||||
        });
 | 
			
		||||
        this._buyQuoteHeartbeat.start(BUY_QUOTE_UPDATE_INTERVAL_TIME_MS);
 | 
			
		||||
        // tslint:disable-next-line:no-floating-promises
 | 
			
		||||
        asyncData.fetchCurrentBuyQuoteAndDispatchToStore(state, dispatch, true);
 | 
			
		||||
        // Trigger first buyquote fetch
 | 
			
		||||
        asyncData.fetchCurrentBuyQuoteAndDispatchToStore(state, dispatch, { updateSilently: false });
 | 
			
		||||
        // warm up the gas price estimator cache just in case we can't
 | 
			
		||||
        // grab the gas price estimate when submitting the transaction
 | 
			
		||||
        // tslint:disable-next-line:no-floating-promises
 | 
			
		||||
 
 | 
			
		||||
@@ -81,7 +81,14 @@ const mapDispatchToProps = (
 | 
			
		||||
            // even if it's debounced, give them the illusion it's loading
 | 
			
		||||
            dispatch(actions.setQuoteRequestStatePending());
 | 
			
		||||
            // tslint:disable-next-line:no-floating-promises
 | 
			
		||||
            debouncedUpdateBuyQuoteAsync(assetBuyer, dispatch, asset, value, true, affiliateInfo);
 | 
			
		||||
            debouncedUpdateBuyQuoteAsync(
 | 
			
		||||
                assetBuyer,
 | 
			
		||||
                dispatch,
 | 
			
		||||
                asset,
 | 
			
		||||
                value,
 | 
			
		||||
                { setPending: true, dispatchErrors: true },
 | 
			
		||||
                affiliateInfo,
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -82,7 +82,7 @@ export const asyncData = {
 | 
			
		||||
    fetchCurrentBuyQuoteAndDispatchToStore: async (
 | 
			
		||||
        state: State,
 | 
			
		||||
        dispatch: Dispatch,
 | 
			
		||||
        shouldSetPending: boolean = false,
 | 
			
		||||
        options: { updateSilently: boolean },
 | 
			
		||||
    ) => {
 | 
			
		||||
        const { buyOrderState, providerState, selectedAsset, selectedAssetUnitAmount, affiliateInfo } = state;
 | 
			
		||||
        const assetBuyer = providerState.assetBuyer;
 | 
			
		||||
@@ -97,7 +97,7 @@ export const asyncData = {
 | 
			
		||||
                dispatch,
 | 
			
		||||
                selectedAsset as ERC20Asset,
 | 
			
		||||
                selectedAssetUnitAmount,
 | 
			
		||||
                shouldSetPending,
 | 
			
		||||
                { setPending: !options.updateSilently, dispatchErrors: !options.updateSilently },
 | 
			
		||||
                affiliateInfo,
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -16,12 +16,12 @@ export const buyQuoteUpdater = {
 | 
			
		||||
        dispatch: Dispatch<Action>,
 | 
			
		||||
        asset: ERC20Asset,
 | 
			
		||||
        assetUnitAmount: BigNumber,
 | 
			
		||||
        setPending = true,
 | 
			
		||||
        options: { setPending: boolean; dispatchErrors: boolean },
 | 
			
		||||
        affiliateInfo?: AffiliateInfo,
 | 
			
		||||
    ): Promise<void> => {
 | 
			
		||||
        // get a new buy quote.
 | 
			
		||||
        const baseUnitValue = Web3Wrapper.toBaseUnitAmount(assetUnitAmount, asset.metaData.decimals);
 | 
			
		||||
        if (setPending) {
 | 
			
		||||
        if (options.setPending) {
 | 
			
		||||
            // mark quote as pending
 | 
			
		||||
            dispatch(actions.setQuoteRequestStatePending());
 | 
			
		||||
        }
 | 
			
		||||
@@ -30,6 +30,7 @@ export const buyQuoteUpdater = {
 | 
			
		||||
        try {
 | 
			
		||||
            newBuyQuote = await assetBuyer.getBuyQuoteAsync(asset.assetData, baseUnitValue, { feePercentage });
 | 
			
		||||
        } catch (error) {
 | 
			
		||||
            if (options.dispatchErrors) {
 | 
			
		||||
                dispatch(actions.setQuoteRequestStateFailure());
 | 
			
		||||
                let errorMessage;
 | 
			
		||||
                if (error.message === AssetBuyerError.InsufficientAssetLiquidity) {
 | 
			
		||||
@@ -49,6 +50,9 @@ export const buyQuoteUpdater = {
 | 
			
		||||
                } else {
 | 
			
		||||
                    throw error;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            // TODO: report to error reporter on else
 | 
			
		||||
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        // We have a successful new buy quote
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,8 @@ export const generateAccountHeartbeater = (options: HeartbeatFactoryOptions): He
 | 
			
		||||
export const generateBuyQuoteHeartbeater = (options: HeartbeatFactoryOptions): Heartbeater => {
 | 
			
		||||
    const { store, shouldPerformImmediatelyOnStart } = options;
 | 
			
		||||
    return new Heartbeater(async () => {
 | 
			
		||||
        await asyncData.fetchCurrentBuyQuoteAndDispatchToStore(store.getState(), store.dispatch, false);
 | 
			
		||||
        await asyncData.fetchCurrentBuyQuoteAndDispatchToStore(store.getState(), store.dispatch, {
 | 
			
		||||
            updateSilently: true,
 | 
			
		||||
        });
 | 
			
		||||
    }, shouldPerformImmediatelyOnStart);
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user