From 5bfc3f8976be50ca5fc6d7a2518e94e48b216af4 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Tue, 30 May 2017 10:19:29 +0200 Subject: remove unused import --- src/contract_wrappers/token_registry_wrapper.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/contract_wrappers') diff --git a/src/contract_wrappers/token_registry_wrapper.ts b/src/contract_wrappers/token_registry_wrapper.ts index 4d6eacb51..431b0303d 100644 --- a/src/contract_wrappers/token_registry_wrapper.ts +++ b/src/contract_wrappers/token_registry_wrapper.ts @@ -1,6 +1,6 @@ import * as _ from 'lodash'; import {Web3Wrapper} from '../web3_wrapper'; -import {ZeroExError, Token, TokenRegistryContract} from '../types'; +import {Token, TokenRegistryContract} from '../types'; import {assert} from '../utils/assert'; import {ContractWrapper} from './contract_wrapper'; import * as TokenRegistryArtifacts from '../artifacts/TokenRegistry.json'; -- cgit v1.2.3 From f2cd368a491fd868b063e4023bba1dc2b395b387 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Tue, 30 May 2017 10:42:39 +0200 Subject: Add TokenMetadata type --- src/contract_wrappers/token_registry_wrapper.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/contract_wrappers') diff --git a/src/contract_wrappers/token_registry_wrapper.ts b/src/contract_wrappers/token_registry_wrapper.ts index 431b0303d..8dd79171e 100644 --- a/src/contract_wrappers/token_registry_wrapper.ts +++ b/src/contract_wrappers/token_registry_wrapper.ts @@ -1,6 +1,6 @@ import * as _ from 'lodash'; import {Web3Wrapper} from '../web3_wrapper'; -import {Token, TokenRegistryContract} from '../types'; +import {Token, TokenRegistryContract, TokenMetadata} from '../types'; import {assert} from '../utils/assert'; import {ContractWrapper} from './contract_wrapper'; import * as TokenRegistryArtifacts from '../artifacts/TokenRegistry.json'; @@ -14,7 +14,7 @@ export class TokenRegistryWrapper extends ContractWrapper { const tokenRegistryContract = contractInstance as TokenRegistryContract; const addresses = await tokenRegistryContract.getTokenAddresses.call(); - const tokenMetadataPromises: Array> = _.map( + const tokenMetadataPromises: Array> = _.map( addresses, (address: string) => (tokenRegistryContract.getTokenMetaData.call(address)), ); -- cgit v1.2.3 From 87491e67414aad0fc30b3df4610bfd8e2ac4b96d Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Tue, 30 May 2017 12:27:27 +0200 Subject: Lazily instantiate exchangeContract and store as instance variable instead of re-instantiating on every call --- src/contract_wrappers/exchange_wrapper.ts | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src/contract_wrappers') diff --git a/src/contract_wrappers/exchange_wrapper.ts b/src/contract_wrappers/exchange_wrapper.ts index f0f153c2b..a7abbb078 100644 --- a/src/contract_wrappers/exchange_wrapper.ts +++ b/src/contract_wrappers/exchange_wrapper.ts @@ -1,4 +1,5 @@ import * as _ from 'lodash'; +import * as Web3 from 'web3'; import {Web3Wrapper} from '../web3_wrapper'; import {ECSignature, ZeroExError, ExchangeContract} from '../types'; import {assert} from '../utils/assert'; @@ -7,9 +8,13 @@ import * as ExchangeArtifacts from '../artifacts/Exchange.json'; import {ecSignatureSchema} from '../schemas/ec_signature_schema'; export class ExchangeWrapper extends ContractWrapper { + private exchangeContractIfExists: ExchangeContract; constructor(web3Wrapper: Web3Wrapper) { super(web3Wrapper); } + public invalidateExchangeContract() { + delete this.exchangeContractIfExists; + } public async isValidSignatureAsync(dataHex: string, ecSignature: ECSignature, signerAddressHex: string): Promise { assert.isHexString('dataHex', dataHex); @@ -19,10 +24,9 @@ export class ExchangeWrapper extends ContractWrapper { const senderAddressIfExists = await this.web3Wrapper.getSenderAddressIfExistsAsync(); assert.assert(!_.isUndefined(senderAddressIfExists), ZeroExError.USER_HAS_NO_ASSOCIATED_ADDRESSES); - const contractInstance = await this.instantiateContractIfExistsAsync((ExchangeArtifacts as any)); - const exchangeInstance = contractInstance as ExchangeContract; + await this.instantiateExchangeContractIfDoesntExistAsync(); - const isValidSignature = await exchangeInstance.isValidSignature.call( + const isValidSignature = await this.exchangeContractIfExists.isValidSignature.call( signerAddressHex, dataHex, ecSignature.v, @@ -34,4 +38,11 @@ export class ExchangeWrapper extends ContractWrapper { ); return isValidSignature; } + private async instantiateExchangeContractIfDoesntExistAsync() { + if (!_.isUndefined(this.exchangeContractIfExists)) { + return; + } + const contractInstance = await this.instantiateContractIfExistsAsync((ExchangeArtifacts as any)); + this.exchangeContractIfExists = contractInstance as ExchangeContract; + } } -- cgit v1.2.3 From cb31b21d28c20a0153199e9388202301e1385bfe Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Tue, 30 May 2017 12:43:06 +0200 Subject: rename invalidateExchangeContract to invalidateContractInstance --- src/contract_wrappers/exchange_wrapper.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/contract_wrappers') diff --git a/src/contract_wrappers/exchange_wrapper.ts b/src/contract_wrappers/exchange_wrapper.ts index a7abbb078..d2f7a8f42 100644 --- a/src/contract_wrappers/exchange_wrapper.ts +++ b/src/contract_wrappers/exchange_wrapper.ts @@ -12,7 +12,7 @@ export class ExchangeWrapper extends ContractWrapper { constructor(web3Wrapper: Web3Wrapper) { super(web3Wrapper); } - public invalidateExchangeContract() { + public invalidateContractInstance() { delete this.exchangeContractIfExists; } public async isValidSignatureAsync(dataHex: string, ecSignature: ECSignature, -- cgit v1.2.3 From a3ce892f85e7a8c1bb0e707f1e64f204a2ce29c6 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Tue, 30 May 2017 12:43:50 +0200 Subject: Make tokenRegistry contract instantiation lazy and clear it on provider update --- src/contract_wrappers/token_registry_wrapper.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'src/contract_wrappers') diff --git a/src/contract_wrappers/token_registry_wrapper.ts b/src/contract_wrappers/token_registry_wrapper.ts index 8dd79171e..69bad2bac 100644 --- a/src/contract_wrappers/token_registry_wrapper.ts +++ b/src/contract_wrappers/token_registry_wrapper.ts @@ -6,17 +6,20 @@ import {ContractWrapper} from './contract_wrapper'; import * as TokenRegistryArtifacts from '../artifacts/TokenRegistry.json'; export class TokenRegistryWrapper extends ContractWrapper { + private tokenRegistryContractIfExists: TokenRegistryContract; constructor(web3Wrapper: Web3Wrapper) { super(web3Wrapper); } + public invalidateContractInstance() { + delete this.tokenRegistryContractIfExists; + } public async getTokensAsync(): Promise { - const contractInstance = await this.instantiateContractIfExistsAsync((TokenRegistryArtifacts as any)); - const tokenRegistryContract = contractInstance as TokenRegistryContract; + await this.instantiateTokenRegistryContractIfDoesntExistAsync(); - const addresses = await tokenRegistryContract.getTokenAddresses.call(); + const addresses = await this.tokenRegistryContractIfExists.getTokenAddresses.call(); const tokenMetadataPromises: Array> = _.map( addresses, - (address: string) => (tokenRegistryContract.getTokenMetaData.call(address)), + (address: string) => (this.tokenRegistryContractIfExists.getTokenMetaData.call(address)), ); const tokensMetadata = await Promise.all(tokenMetadataPromises); const tokens = _.map(tokensMetadata, metadata => { @@ -30,4 +33,11 @@ export class TokenRegistryWrapper extends ContractWrapper { }); return tokens; } + private async instantiateTokenRegistryContractIfDoesntExistAsync() { + if (!_.isUndefined(this.tokenRegistryContractIfExists)) { + return; + } + const contractInstance = await this.instantiateContractIfExistsAsync((TokenRegistryArtifacts as any)); + this.tokenRegistryContractIfExists = contractInstance as TokenRegistryContract; + } } -- cgit v1.2.3 From f78f3b1bcd7614feee61d828f25c6c12b229d4ac Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Tue, 30 May 2017 12:48:46 +0200 Subject: remove unused import --- src/contract_wrappers/exchange_wrapper.ts | 1 - 1 file changed, 1 deletion(-) (limited to 'src/contract_wrappers') diff --git a/src/contract_wrappers/exchange_wrapper.ts b/src/contract_wrappers/exchange_wrapper.ts index d2f7a8f42..90b9a39d2 100644 --- a/src/contract_wrappers/exchange_wrapper.ts +++ b/src/contract_wrappers/exchange_wrapper.ts @@ -1,5 +1,4 @@ import * as _ from 'lodash'; -import * as Web3 from 'web3'; import {Web3Wrapper} from '../web3_wrapper'; import {ECSignature, ZeroExError, ExchangeContract} from '../types'; import {assert} from '../utils/assert'; -- cgit v1.2.3 From ad14c307cec8e0e7621b47e9e1ecb2652985190f Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Tue, 30 May 2017 14:23:44 +0200 Subject: Refactor exchangeWrapper and tokenRegistryWrapper to use contract getter that instantiates contract instance if not already instantiated --- src/contract_wrappers/exchange_wrapper.ts | 13 +++++++------ src/contract_wrappers/token_registry_wrapper.ts | 15 ++++++++------- 2 files changed, 15 insertions(+), 13 deletions(-) (limited to 'src/contract_wrappers') diff --git a/src/contract_wrappers/exchange_wrapper.ts b/src/contract_wrappers/exchange_wrapper.ts index 90b9a39d2..3f6eb0dab 100644 --- a/src/contract_wrappers/exchange_wrapper.ts +++ b/src/contract_wrappers/exchange_wrapper.ts @@ -7,11 +7,11 @@ import * as ExchangeArtifacts from '../artifacts/Exchange.json'; import {ecSignatureSchema} from '../schemas/ec_signature_schema'; export class ExchangeWrapper extends ContractWrapper { - private exchangeContractIfExists: ExchangeContract; + private exchangeContractIfExists?: ExchangeContract; constructor(web3Wrapper: Web3Wrapper) { super(web3Wrapper); } - public invalidateContractInstance() { + public invalidateContractInstance(): void { delete this.exchangeContractIfExists; } public async isValidSignatureAsync(dataHex: string, ecSignature: ECSignature, @@ -23,9 +23,9 @@ export class ExchangeWrapper extends ContractWrapper { const senderAddressIfExists = await this.web3Wrapper.getSenderAddressIfExistsAsync(); assert.assert(!_.isUndefined(senderAddressIfExists), ZeroExError.USER_HAS_NO_ASSOCIATED_ADDRESSES); - await this.instantiateExchangeContractIfDoesntExistAsync(); + const exchangeContract = await this.getExchangeContractAsync(); - const isValidSignature = await this.exchangeContractIfExists.isValidSignature.call( + const isValidSignature = await exchangeContract.isValidSignature.call( signerAddressHex, dataHex, ecSignature.v, @@ -37,11 +37,12 @@ export class ExchangeWrapper extends ContractWrapper { ); return isValidSignature; } - private async instantiateExchangeContractIfDoesntExistAsync() { + private async getExchangeContractAsync(): Promise { if (!_.isUndefined(this.exchangeContractIfExists)) { - return; + return this.exchangeContractIfExists; } const contractInstance = await this.instantiateContractIfExistsAsync((ExchangeArtifacts as any)); this.exchangeContractIfExists = contractInstance as ExchangeContract; + return this.exchangeContractIfExists; } } diff --git a/src/contract_wrappers/token_registry_wrapper.ts b/src/contract_wrappers/token_registry_wrapper.ts index 69bad2bac..86bea1c5d 100644 --- a/src/contract_wrappers/token_registry_wrapper.ts +++ b/src/contract_wrappers/token_registry_wrapper.ts @@ -6,20 +6,20 @@ import {ContractWrapper} from './contract_wrapper'; import * as TokenRegistryArtifacts from '../artifacts/TokenRegistry.json'; export class TokenRegistryWrapper extends ContractWrapper { - private tokenRegistryContractIfExists: TokenRegistryContract; + private tokenRegistryContractIfExists?: TokenRegistryContract; constructor(web3Wrapper: Web3Wrapper) { super(web3Wrapper); } - public invalidateContractInstance() { + public invalidateContractInstance(): void { delete this.tokenRegistryContractIfExists; } public async getTokensAsync(): Promise { - await this.instantiateTokenRegistryContractIfDoesntExistAsync(); + const tokenRegistryContract = await this.getTokenRegistryContractAsync(); - const addresses = await this.tokenRegistryContractIfExists.getTokenAddresses.call(); + const addresses = await tokenRegistryContract.getTokenAddresses.call(); const tokenMetadataPromises: Array> = _.map( addresses, - (address: string) => (this.tokenRegistryContractIfExists.getTokenMetaData.call(address)), + (address: string) => (tokenRegistryContract.getTokenMetaData.call(address)), ); const tokensMetadata = await Promise.all(tokenMetadataPromises); const tokens = _.map(tokensMetadata, metadata => { @@ -33,11 +33,12 @@ export class TokenRegistryWrapper extends ContractWrapper { }); return tokens; } - private async instantiateTokenRegistryContractIfDoesntExistAsync() { + private async getTokenRegistryContractAsync(): Promise { if (!_.isUndefined(this.tokenRegistryContractIfExists)) { - return; + return this.tokenRegistryContractIfExists; } const contractInstance = await this.instantiateContractIfExistsAsync((TokenRegistryArtifacts as any)); this.tokenRegistryContractIfExists = contractInstance as TokenRegistryContract; + return this.tokenRegistryContractIfExists; } } -- cgit v1.2.3