From 4fe28ec53c4e84544c3c21853dff57c4c6a4e45d Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Wed, 22 Nov 2017 11:53:04 -0600 Subject: Make zeroEx.exchange.getContractAddress non-async --- .../0x.js/src/contract_wrappers/exchange_wrapper.ts | 19 +++++++++++++------ packages/0x.js/test/0x.js_test.ts | 3 +-- packages/0x.js/test/artifacts_test.ts | 4 ++-- packages/0x.js/test/exchange_wrapper_test.ts | 2 +- packages/0x.js/test/order_state_watcher_test.ts | 2 +- 5 files changed, 18 insertions(+), 12 deletions(-) (limited to 'packages') diff --git a/packages/0x.js/src/contract_wrappers/exchange_wrapper.ts b/packages/0x.js/src/contract_wrappers/exchange_wrapper.ts index 96b642a90..9ab03454c 100644 --- a/packages/0x.js/src/contract_wrappers/exchange_wrapper.ts +++ b/packages/0x.js/src/contract_wrappers/exchange_wrapper.ts @@ -664,7 +664,7 @@ export class ExchangeWrapper extends ContractWrapper { assert.doesBelongToStringEnum('eventName', eventName, ExchangeEvents); assert.doesConformToSchema('indexFilterValues', indexFilterValues, schemas.indexFilterValuesSchema); assert.isFunction('callback', callback); - const exchangeContractAddress = await this.getContractAddressAsync(); + const exchangeContractAddress = this.getContractAddress(); const subscriptionToken = this._subscribe( exchangeContractAddress, eventName, indexFilterValues, artifacts.ExchangeArtifact.abi, callback, ); @@ -691,7 +691,7 @@ export class ExchangeWrapper extends ContractWrapper { assert.doesBelongToStringEnum('eventName', eventName, ExchangeEvents); assert.doesConformToSchema('subscriptionOpts', subscriptionOpts, schemas.subscriptionOptsSchema); assert.doesConformToSchema('indexFilterValues', indexFilterValues, schemas.indexFilterValuesSchema); - const exchangeContractAddress = await this.getContractAddressAsync(); + const exchangeContractAddress = this.getContractAddress(); const logs = await this._getLogsAsync( exchangeContractAddress, eventName, subscriptionOpts, indexFilterValues, artifacts.ExchangeArtifact.abi, ); @@ -702,10 +702,17 @@ export class ExchangeWrapper extends ContractWrapper { * that the user-passed web3 provider is connected to. * @returns The Ethereum address of the Exchange contract being used. */ - public async getContractAddressAsync(): Promise { - const exchangeInstance = await this._getExchangeContractAsync(); - const exchangeAddress = exchangeInstance.address; - return exchangeAddress; + public getContractAddress(): string { + const networkId = this._web3Wrapper.getNetworkId(); + if (_.isUndefined(this._contractAddressIfExists)) { + const contractAddress = artifacts.ExchangeArtifact.networks[networkId].address; + if (_.isUndefined(contractAddress)) { + throw new Error(ZeroExError.ExchangeContractDoesNotExist); + } + return contractAddress; + } else { + return this._contractAddressIfExists; + } } /** * Checks if order is still fillable and throws an error otherwise. Useful for orderbook diff --git a/packages/0x.js/test/0x.js_test.ts b/packages/0x.js/test/0x.js_test.ts index 94387e740..95a8b027d 100644 --- a/packages/0x.js/test/0x.js_test.ts +++ b/packages/0x.js/test/0x.js_test.ts @@ -240,8 +240,7 @@ describe('ZeroEx library', () => { networkId: constants.TESTRPC_NETWORK_ID, }; const zeroExWithWrongExchangeAddress = new ZeroEx(web3.currentProvider, zeroExConfig); - return expect(zeroExWithWrongExchangeAddress.exchange.getContractAddressAsync()) - .to.be.rejectedWith(ZeroExError.ContractDoesNotExist); + expect(zeroExWithWrongExchangeAddress.exchange.getContractAddress()).to.be.equal(ZeroEx.NULL_ADDRESS); }); it('allows to specify ether token contract address', async () => { const zeroExConfig = { diff --git a/packages/0x.js/test/artifacts_test.ts b/packages/0x.js/test/artifacts_test.ts index 1c36fb358..265a71715 100644 --- a/packages/0x.js/test/artifacts_test.ts +++ b/packages/0x.js/test/artifacts_test.ts @@ -29,7 +29,7 @@ describe('Artifacts', () => { await (zeroEx.token as any)._getTokenTransferProxyAddressAsync(); }).timeout(TIMEOUT); it('exchange contract is deployed', async () => { - await zeroEx.exchange.getContractAddressAsync(); + await (zeroEx.exchange as any)._getExchangeContractAsync(); }).timeout(TIMEOUT); }); describe('contracts are deployed on ropsten', () => { @@ -49,7 +49,7 @@ describe('Artifacts', () => { await (zeroEx.token as any)._getTokenTransferProxyAddressAsync(); }).timeout(TIMEOUT); it('exchange contract is deployed', async () => { - await zeroEx.exchange.getContractAddressAsync(); + await (zeroEx.exchange as any)._getExchangeContractAsync(); }).timeout(TIMEOUT); }); }); diff --git a/packages/0x.js/test/exchange_wrapper_test.ts b/packages/0x.js/test/exchange_wrapper_test.ts index 5d1ff8f50..c1f9316c4 100644 --- a/packages/0x.js/test/exchange_wrapper_test.ts +++ b/packages/0x.js/test/exchange_wrapper_test.ts @@ -45,7 +45,7 @@ describe('ExchangeWrapper', () => { before(async () => { web3 = web3Factory.create(); zeroEx = new ZeroEx(web3.currentProvider, config); - exchangeContractAddress = await zeroEx.exchange.getContractAddressAsync(); + exchangeContractAddress = zeroEx.exchange.getContractAddress(); userAddresses = await zeroEx.getAvailableAddressesAsync(); tokens = await zeroEx.tokenRegistry.getTokensAsync(); tokenUtils = new TokenUtils(tokens); diff --git a/packages/0x.js/test/order_state_watcher_test.ts b/packages/0x.js/test/order_state_watcher_test.ts index 887fc8605..fd94a3df6 100644 --- a/packages/0x.js/test/order_state_watcher_test.ts +++ b/packages/0x.js/test/order_state_watcher_test.ts @@ -56,7 +56,7 @@ describe('OrderStateWatcher', () => { before(async () => { web3 = web3Factory.create(); zeroEx = new ZeroEx(web3.currentProvider, config); - exchangeContractAddress = await zeroEx.exchange.getContractAddressAsync(); + exchangeContractAddress = zeroEx.exchange.getContractAddress(); userAddresses = await zeroEx.getAvailableAddressesAsync(); [, maker, taker] = userAddresses; tokens = await zeroEx.tokenRegistry.getTokensAsync(); -- cgit