Cache networkId in web3Wrapper

This commit is contained in:
Leonid Logvinov
2017-07-06 15:17:46 -07:00
parent 18050b7ea3
commit 8b88ad835c

View File

@@ -5,11 +5,13 @@ import promisify = require('es6-promisify');
export class Web3Wrapper { export class Web3Wrapper {
private web3: Web3; private web3: Web3;
private networkIdIfExists?: number;
constructor(provider: Web3.Provider) { constructor(provider: Web3.Provider) {
this.web3 = new Web3(); this.web3 = new Web3();
this.web3.setProvider(provider); this.web3.setProvider(provider);
} }
public setProvider(provider: Web3.Provider) { public setProvider(provider: Web3.Provider) {
this.networkIdIfExists = undefined;
this.web3.setProvider(provider); this.web3.setProvider(provider);
} }
public isAddress(address: string): boolean { public isAddress(address: string): boolean {
@@ -27,11 +29,16 @@ export class Web3Wrapper {
return this.web3.currentProvider; return this.web3.currentProvider;
} }
public async getNetworkIdIfExistsAsync(): Promise<number|undefined> { public async getNetworkIdIfExistsAsync(): Promise<number|undefined> {
try { if (_.isUndefined(this.networkIdIfExists)) {
const networkId = await this.getNetworkAsync(); try {
return Number(networkId); const networkId = await this.getNetworkAsync();
} catch (err) { this.networkIdIfExists = Number(networkId);
return undefined; return this.networkIdIfExists;
} catch (err) {
return undefined;
}
} else {
return this.networkIdIfExists;
} }
} }
public toWei(ethAmount: BigNumber.BigNumber): BigNumber.BigNumber { public toWei(ethAmount: BigNumber.BigNumber): BigNumber.BigNumber {