diff options
author | Jacob Evans <jacob@dekz.net> | 2017-11-12 00:01:59 +0800 |
---|---|---|
committer | Jacob Evans <jacob@dekz.net> | 2017-11-12 00:01:59 +0800 |
commit | 4ae9482d506ccdf028fcd39bbaf652bbcbef52e8 (patch) | |
tree | 3b133b11e8074a75ceafe006b6166a41022a634a /src/contract_wrappers/exchange_wrapper.ts | |
parent | 4262ac3c8966468b343c6467e0e9da85ef25be05 (diff) | |
download | dexon-0x-contracts-4ae9482d506ccdf028fcd39bbaf652bbcbef52e8.tar dexon-0x-contracts-4ae9482d506ccdf028fcd39bbaf652bbcbef52e8.tar.gz dexon-0x-contracts-4ae9482d506ccdf028fcd39bbaf652bbcbef52e8.tar.bz2 dexon-0x-contracts-4ae9482d506ccdf028fcd39bbaf652bbcbef52e8.tar.lz dexon-0x-contracts-4ae9482d506ccdf028fcd39bbaf652bbcbef52e8.tar.xz dexon-0x-contracts-4ae9482d506ccdf028fcd39bbaf652bbcbef52e8.tar.zst dexon-0x-contracts-4ae9482d506ccdf028fcd39bbaf652bbcbef52e8.zip |
Clean up subscription state.
In the case of an exception, keep the state correct between contract wrapper, exchange wrapper and token wrapper.
Diffstat (limited to 'src/contract_wrappers/exchange_wrapper.ts')
-rw-r--r-- | src/contract_wrappers/exchange_wrapper.ts | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/contract_wrappers/exchange_wrapper.ts b/src/contract_wrappers/exchange_wrapper.ts index b8704e72c..4fd2b23a8 100644 --- a/src/contract_wrappers/exchange_wrapper.ts +++ b/src/contract_wrappers/exchange_wrapper.ts @@ -49,7 +49,6 @@ const SHOULD_VALIDATE_BY_DEFAULT = true; */ export class ExchangeWrapper extends ContractWrapper { private _exchangeContractIfExists?: ExchangeContract; - private _activeSubscriptions: string[]; private _orderValidationUtils: OrderValidationUtils; private _tokenWrapper: TokenWrapper; private _exchangeContractErrCodesToMsg = { @@ -84,7 +83,6 @@ export class ExchangeWrapper extends ContractWrapper { super(web3Wrapper, abiDecoder); this._tokenWrapper = tokenWrapper; this._orderValidationUtils = new OrderValidationUtils(tokenWrapper, this); - this._activeSubscriptions = []; this._contractAddressIfExists = contractAddressIfExists; } /** @@ -666,7 +664,6 @@ export class ExchangeWrapper extends ContractWrapper { const subscriptionToken = this._subscribe<ArgsType>( exchangeContractAddress, eventName, indexFilterValues, artifacts.ExchangeArtifact.abi, callback, ); - this._activeSubscriptions.push(subscriptionToken); return subscriptionToken; } /** @@ -674,10 +671,15 @@ export class ExchangeWrapper extends ContractWrapper { * @param subscriptionToken Subscription token returned by `subscribe()` */ public unsubscribe(subscriptionToken: string): void { - _.pull(this._activeSubscriptions, subscriptionToken); this._unsubscribe(subscriptionToken); } /** + * Cancels all existing subscriptions + */ + public unsubscribeAll(): void { + super.unsubscribeAll(); + } + /** * Gets historical logs without creating a subscription * @param eventName The exchange contract event you would like to subscribe to. * @param subscriptionOpts Subscriptions options that let you configure the subscription. @@ -825,13 +827,7 @@ export class ExchangeWrapper extends ContractWrapper { const ZRXtokenAddress = await exchangeInstance.ZRX_TOKEN_CONTRACT.callAsync(); return ZRXtokenAddress; } - /** - * Cancels all existing subscriptions - */ - public unsubscribeAll(): void { - _.forEach(this._activeSubscriptions, this._unsubscribe.bind(this)); - this._activeSubscriptions = []; - } + private async _invalidateContractInstancesAsync(): Promise<void> { this.unsubscribeAll(); delete this._exchangeContractIfExists; |