feat: debounce the fetching of new quotes
This commit is contained in:
		@@ -30,6 +30,19 @@ const mapStateToProps = (state: State, _ownProps: SelectedAssetAmountInputProps)
 | 
			
		||||
    value: state.selectedAssetAmount,
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const updateBuyQuote = async (dispatch: Dispatch<Action>, assetAmount?: BigNumber): Promise<void> => {
 | 
			
		||||
    if (_.isUndefined(assetAmount)) {
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    // get a new buy quote.
 | 
			
		||||
    const baseUnitValue = Web3Wrapper.toBaseUnitAmount(assetAmount, zrxDecimals);
 | 
			
		||||
    const newBuyQuote = await assetBuyer.getBuyQuoteForERC20TokenAddressAsync(zrxContractAddress, baseUnitValue);
 | 
			
		||||
    // invalidate the last buy quote.
 | 
			
		||||
    dispatch({ type: ActionTypes.UPDATE_LATEST_BUY_QUOTE, data: newBuyQuote });
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const debouncedUpdateBuyQuote = _.debounce(updateBuyQuote, 200, { trailing: true });
 | 
			
		||||
 | 
			
		||||
const mapDispatchToProps = (dispatch: Dispatch<Action>): ConnectedDispatch => ({
 | 
			
		||||
    onChange: async value => {
 | 
			
		||||
        // Update the input
 | 
			
		||||
@@ -38,16 +51,7 @@ const mapDispatchToProps = (dispatch: Dispatch<Action>): ConnectedDispatch => ({
 | 
			
		||||
        dispatch({ type: ActionTypes.UPDATE_LATEST_BUY_QUOTE, data: undefined });
 | 
			
		||||
        // reset our buy state
 | 
			
		||||
        dispatch({ type: ActionTypes.UPDATE_SELECTED_ASSET_BUY_STATE, data: AsyncProcessState.NONE });
 | 
			
		||||
        if (!_.isUndefined(value)) {
 | 
			
		||||
            // get a new buy quote.
 | 
			
		||||
            const baseUnitValue = Web3Wrapper.toBaseUnitAmount(value, zrxDecimals);
 | 
			
		||||
            const newBuyQuote = await assetBuyer.getBuyQuoteForERC20TokenAddressAsync(
 | 
			
		||||
                zrxContractAddress,
 | 
			
		||||
                baseUnitValue,
 | 
			
		||||
            );
 | 
			
		||||
            // invalidate the last buy quote.
 | 
			
		||||
            dispatch({ type: ActionTypes.UPDATE_LATEST_BUY_QUOTE, data: newBuyQuote });
 | 
			
		||||
        }
 | 
			
		||||
        debouncedUpdateBuyQuote(dispatch, value);
 | 
			
		||||
    },
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user