aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/contract_wrappers/exchange_wrapper.ts19
-rw-r--r--src/types.ts1
2 files changed, 12 insertions, 8 deletions
diff --git a/src/contract_wrappers/exchange_wrapper.ts b/src/contract_wrappers/exchange_wrapper.ts
index e4d360690..af8b8db24 100644
--- a/src/contract_wrappers/exchange_wrapper.ts
+++ b/src/contract_wrappers/exchange_wrapper.ts
@@ -18,7 +18,8 @@ import {
CreateContractEvent,
ContractEventObj,
EventCallback,
- ContractResponse, OrderCancellationRequest,
+ ContractResponse,
+ OrderCancellationRequest,
} from '../types';
import {assert} from '../utils/assert';
import {utils} from '../utils/utils';
@@ -187,16 +188,18 @@ export class ExchangeWrapper extends ContractWrapper {
*/
public async batchCancelOrderAsync(cancellationRequestsBatch: OrderCancellationRequest[]): Promise<void> {
const makers = _.map(cancellationRequestsBatch, cancellationRequest => cancellationRequest.order.maker);
- assert.assert(!_.isEmpty(cancellationRequestsBatch), 'Can not cancel an empty batch');
- assert.assert(_.uniq(makers).length === 1, 'Can not cancel orders from multiple makers in a single batch');
+ if (_.isEmpty(cancellationRequestsBatch)) {
+ return;
+ }
+ assert.assert(_.uniq(makers).length === 1, ExchangeContractErrs.MULTIPLE_MAKERS_IN_SINGLE_CANCEL_BATCH);
const maker = makers[0];
+ await assert.isSenderAddressAvailableAsync(this.web3Wrapper, 'maker', maker);
_.forEach(cancellationRequestsBatch,
- async (cancellationRequest: OrderCancellationRequest) => {
- assert.doesConformToSchema('order',
+ async (cancellationRequest: OrderCancellationRequest, i: number) => {
+ assert.doesConformToSchema(`orderCancellationRequests[${i}].order`,
SchemaValidator.convertToJSONSchemaCompatibleObject(cancellationRequest.order as object), orderSchema);
- assert.isBigNumber('takerTokenCancelAmount', cancellationRequest.takerTokenCancelAmount);
- await assert.isSenderAddressAvailableAsync(this.web3Wrapper, 'order.maker',
- cancellationRequest.order.maker);
+ assert.isBigNumber(`orderCancellationRequests[${i}].takerTokenCancelAmount`,
+ cancellationRequest.takerTokenCancelAmount);
await this.validateCancelOrderAndThrowIfInvalidAsync(
cancellationRequest.order, cancellationRequest.takerTokenCancelAmount);
});
diff --git a/src/types.ts b/src/types.ts
index 1034893a4..c58e5fd02 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -145,6 +145,7 @@ export const ExchangeContractErrs = strEnum([
'INSUFFICIENT_MAKER_FEE_BALANCE',
'INSUFFICIENT_MAKER_FEE_ALLOWANCE',
'TRANSACTION_SENDER_IS_NOT_FILL_ORDER_TAKER',
+ 'MULTIPLE_MAKERS_IN_SINGLE_CANCEL_BATCH'
]);
export type ExchangeContractErrs = keyof typeof ExchangeContractErrs;