From 131236305bff6cdf85a7edb7e3c61c50ffbb1956 Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Tue, 21 Nov 2017 16:08:45 -0600 Subject: Store networkId in web3Wrapper --- packages/0x.js/src/web3_wrapper.ts | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) (limited to 'packages/0x.js/src/web3_wrapper.ts') diff --git a/packages/0x.js/src/web3_wrapper.ts b/packages/0x.js/src/web3_wrapper.ts index 7bd8ea093..8ce696513 100644 --- a/packages/0x.js/src/web3_wrapper.ts +++ b/packages/0x.js/src/web3_wrapper.ts @@ -18,10 +18,11 @@ interface RawLogEntry { export class Web3Wrapper { private web3: Web3; + private networkId: number; private defaults: Partial; private networkIdIfExists?: number; private jsonRpcRequestId: number; - constructor(provider: Web3.Provider, defaults?: Partial) { + constructor(provider: Web3.Provider, networkId: number, defaults?: Partial) { if (_.isUndefined((provider as any).sendAsync)) { // Web3@1.0 provider doesn't support synchronous http requests, // so it only has an async `send` method, instead of a `send` and `sendAsync` in web3@0.x.x` @@ -29,6 +30,7 @@ export class Web3Wrapper { (provider as any).sendAsync = (provider as any).send; } this.web3 = new Web3(); + this.networkId = networkId; this.web3.setProvider(provider); this.defaults = defaults || {}; this.jsonRpcRequestId = 0; @@ -58,31 +60,18 @@ export class Web3Wrapper { public getCurrentProvider(): Web3.Provider { return this.web3.currentProvider; } - public async getNetworkIdIfExistsAsync(): Promise { - if (!_.isUndefined(this.networkIdIfExists)) { - return this.networkIdIfExists; - } - - try { - const networkId = await this.getNetworkAsync(); - this.networkIdIfExists = Number(networkId); - return this.networkIdIfExists; - } catch (err) { - return undefined; - } + public getNetworkId(): number { + return this.networkId; } public async getContractInstanceFromArtifactAsync(artifact: Artifact, address?: string): Promise { let contractAddress: string; if (_.isUndefined(address)) { - const networkIdIfExists = await this.getNetworkIdIfExistsAsync(); - if (_.isUndefined(networkIdIfExists)) { - throw new Error(ZeroExError.NoNetworkId); - } - if (_.isUndefined(artifact.networks[networkIdIfExists])) { + const networkId = this.getNetworkId(); + if (_.isUndefined(artifact.networks[networkId])) { throw new Error(ZeroExError.ContractNotDeployedOnNetwork); } - contractAddress = artifact.networks[networkIdIfExists].address.toLowerCase(); + contractAddress = artifact.networks[networkId].address.toLowerCase(); } else { contractAddress = address; } -- cgit v1.2.3 From 010e6f8d7f7403cb91c020fc501fdb4f59861c58 Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Wed, 22 Nov 2017 16:19:06 -0600 Subject: Fix the imports order --- packages/0x.js/src/web3_wrapper.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'packages/0x.js/src/web3_wrapper.ts') diff --git a/packages/0x.js/src/web3_wrapper.ts b/packages/0x.js/src/web3_wrapper.ts index 8ce696513..00f91106b 100644 --- a/packages/0x.js/src/web3_wrapper.ts +++ b/packages/0x.js/src/web3_wrapper.ts @@ -1,9 +1,10 @@ -import * as _ from 'lodash'; -import * as Web3 from 'web3'; import BigNumber from 'bignumber.js'; import promisify = require('es6-promisify'); -import {ZeroExError, Artifact, TransactionReceipt} from './types'; +import * as _ from 'lodash'; +import * as Web3 from 'web3'; + import {Contract} from './contract'; +import {Artifact, TransactionReceipt, ZeroExError} from './types'; interface RawLogEntry { logIndex: string|null; -- cgit v1.2.3 From 062f85e5069d0c2d56cd10bdb8a31a6d0a6c88dc Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Thu, 23 Nov 2017 13:56:28 -0600 Subject: Pass networkId on provider update --- packages/0x.js/src/web3_wrapper.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'packages/0x.js/src/web3_wrapper.ts') diff --git a/packages/0x.js/src/web3_wrapper.ts b/packages/0x.js/src/web3_wrapper.ts index 00f91106b..557cd28e5 100644 --- a/packages/0x.js/src/web3_wrapper.ts +++ b/packages/0x.js/src/web3_wrapper.ts @@ -21,7 +21,6 @@ export class Web3Wrapper { private web3: Web3; private networkId: number; private defaults: Partial; - private networkIdIfExists?: number; private jsonRpcRequestId: number; constructor(provider: Web3.Provider, networkId: number, defaults?: Partial) { if (_.isUndefined((provider as any).sendAsync)) { @@ -36,8 +35,8 @@ export class Web3Wrapper { this.defaults = defaults || {}; this.jsonRpcRequestId = 0; } - public setProvider(provider: Web3.Provider) { - delete this.networkIdIfExists; + public setProvider(provider: Web3.Provider, networkId: number) { + this.networkId = networkId; this.web3.setProvider(provider); } public isAddress(address: string): boolean { -- cgit v1.2.3 From c780d04ceea70bbe706bdd740b4dec01a34de00b Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Thu, 23 Nov 2017 14:29:49 -0600 Subject: Remove ContractDoesNotExist error and replace it with more specific errors --- packages/0x.js/src/web3_wrapper.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'packages/0x.js/src/web3_wrapper.ts') diff --git a/packages/0x.js/src/web3_wrapper.ts b/packages/0x.js/src/web3_wrapper.ts index 557cd28e5..a031de486 100644 --- a/packages/0x.js/src/web3_wrapper.ts +++ b/packages/0x.js/src/web3_wrapper.ts @@ -4,7 +4,7 @@ import * as _ from 'lodash'; import * as Web3 from 'web3'; import {Contract} from './contract'; -import {Artifact, TransactionReceipt, ZeroExError} from './types'; +import {Artifact, ArtifactContractName, TransactionReceipt, ZeroExError} from './types'; interface RawLogEntry { logIndex: string|null; @@ -17,6 +17,15 @@ interface RawLogEntry { topics: string[]; } +const CONTRACT_NAME_TO_NOT_FOUND_ERROR: {[contractName: string]: ZeroExError} = { + ZRX: ZeroExError.ZRXContractDoesNotExist, + EtherToken: ZeroExError.EtherTokenContractDoesNotExist, + Token: ZeroExError.TokenContractDoesNotExist, + TokenRegistry: ZeroExError.TokenRegistryContractDoesNotExist, + TokenTransferProxy: ZeroExError.TokenTransferProxyContractDoesNotExist, + Exchange: ZeroExError.ExchangeContractDoesNotExist, +}; + export class Web3Wrapper { private web3: Web3; private networkId: number; @@ -77,7 +86,7 @@ export class Web3Wrapper { } const doesContractExist = await this.doesContractExistAtAddressAsync(contractAddress); if (!doesContractExist) { - throw new Error(ZeroExError.ContractDoesNotExist); + throw new Error(CONTRACT_NAME_TO_NOT_FOUND_ERROR[artifact.contract_name]); } const contractInstance = this.getContractInstance( artifact.abi, contractAddress, -- cgit v1.2.3