This commit is contained in:
David Sun
2019-09-21 22:21:55 -04:00
parent ef0096b7d9
commit e5133a2dd9
3 changed files with 15 additions and 8 deletions

View File

@@ -422,11 +422,15 @@ export class SwapQuoter {
const isMakerAssetZrxToken = makerAssetData === zrxTokenAssetData;
// get the relevant orders for the makerAsset
const ordersAndFillableAmounts = await this.getOrdersAndFillableAmountsAsync(makerAssetData, takerAssetData);
const doesOrdersRequireFeeOrders = (!isMakerAssetZrxToken && utils.isFeeOrdersRequiredToFillOrders(ordersAndFillableAmounts));
const doesOrdersRequireFeeOrders =
!isMakerAssetZrxToken && utils.isFeeOrdersRequiredToFillOrders(ordersAndFillableAmounts);
const isRequestingFeeOrders = !shouldDisableRequestingFeeOrders && doesOrdersRequireFeeOrders;
let feeOrdersAndFillableAmounts = constants.EMPTY_ORDERS_AND_FILLABLE_AMOUNTS;
if (isRequestingFeeOrders) {
feeOrdersAndFillableAmounts = await this.getOrdersAndFillableAmountsAsync(zrxTokenAssetData, takerAssetData);
feeOrdersAndFillableAmounts = await this.getOrdersAndFillableAmountsAsync(
zrxTokenAssetData,
takerAssetData,
);
}
if (ordersAndFillableAmounts.orders.length === 0) {

View File

@@ -29,10 +29,13 @@ export const utils = {
},
isFeeOrdersRequiredToFillOrders(ordersAndFillableAmounts: OrdersAndFillableAmounts): boolean {
const { orders, remainingFillableMakerAssetAmounts } = ordersAndFillableAmounts;
return _.some(orders, (order: SignedOrder, index: number): boolean => {
const remainingFillableMakerAssetAmount = remainingFillableMakerAssetAmounts[index];
// If takerFee is a non zero value and order is still fillable, fee orders are required
return !order.takerFee.isZero() && !remainingFillableMakerAssetAmount.isZero();
});
return _.some(
orders,
(order: SignedOrder, index: number): boolean => {
const remainingFillableMakerAssetAmount = remainingFillableMakerAssetAmounts[index];
// If takerFee is a non zero value and order is still fillable, fee orders are required
return !order.takerFee.isZero() && !remainingFillableMakerAssetAmount.isZero();
},
);
},
};

View File

@@ -66,7 +66,7 @@ describe('utils', () => {
const isFeeOrdersRequired = utils.isFeeOrdersRequiredToFillOrders(ordersAndFillableAmounts);
expect(isFeeOrdersRequired).to.equal(false);
});
it('should return false if ordersAndFillableAmounts is completely unfilled and doesn\'t have fees', () => {
it("should return false if ordersAndFillableAmounts is completely unfilled and doesn't have fees", () => {
const ordersAndFillableAmounts = {
orders: [sellTwoTokensFor1Weth, sellTenTokensFor10Weth],
remainingFillableMakerAssetAmounts: [baseUnitAmount(1), baseUnitAmount(10)],