aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/contract_wrappers/contract_wrapper.ts25
-rw-r--r--src/contract_wrappers/token_wrapper.ts18
2 files changed, 29 insertions, 14 deletions
diff --git a/src/contract_wrappers/contract_wrapper.ts b/src/contract_wrappers/contract_wrapper.ts
index 0c8864ee1..6b2517fc9 100644
--- a/src/contract_wrappers/contract_wrapper.ts
+++ b/src/contract_wrappers/contract_wrapper.ts
@@ -2,7 +2,15 @@ import * as _ from 'lodash';
import * as Web3 from 'web3';
import {Web3Wrapper} from '../web3_wrapper';
import {AbiDecoder} from '../utils/abi_decoder';
-import {ZeroExError, Artifact, LogWithDecodedArgs, RawLog, ContractEvents} from '../types';
+import {
+ ZeroExError,
+ Artifact,
+ LogWithDecodedArgs,
+ RawLog,
+ ContractEvents,
+ SubscriptionOpts,
+ IndexedFilterValues,
+} from '../types';
import {utils} from '../utils/utils';
export class ContractWrapper {
@@ -12,6 +20,21 @@ export class ContractWrapper {
this._web3Wrapper = web3Wrapper;
this._abiDecoder = abiDecoder;
}
+ protected async _getLogsAsync(address: string, eventName: ContractEvents, subscriptionOpts: SubscriptionOpts,
+ indexFilterValues: IndexedFilterValues,
+ abi: Web3.ContractAbi): Promise<Array<LogWithDecodedArgs|RawLog>> {
+ // TODO include indexFilterValues in topics
+ const eventSignature = this._getEventSignatureFromAbiByName(abi, eventName);
+ const filter = {
+ fromBlock: subscriptionOpts.fromBlock,
+ toBlock: subscriptionOpts.toBlock,
+ address,
+ topics: [this._web3Wrapper.keccak256(eventSignature)],
+ };
+ const logs = await this._web3Wrapper.getLogsAsync(filter);
+ const logsWithDecodedArguments = _.map(logs, this._tryToDecodeLogOrNoOp.bind(this));
+ return logsWithDecodedArguments;
+ }
protected _tryToDecodeLogOrNoOp(log: Web3.LogEntry): LogWithDecodedArgs|RawLog {
if (_.isUndefined(this._abiDecoder)) {
throw new Error(ZeroExError.NoAbiDecoder);
diff --git a/src/contract_wrappers/token_wrapper.ts b/src/contract_wrappers/token_wrapper.ts
index 04c03edbd..b932686d4 100644
--- a/src/contract_wrappers/token_wrapper.ts
+++ b/src/contract_wrappers/token_wrapper.ts
@@ -280,20 +280,12 @@ export class TokenWrapper extends ContractWrapper {
this._tokenLogEventEmitters.push(eventEmitter);
return eventEmitter;
}
- public async getLogsAsync(tokenAddress: string, eventName: TokenEvents,
- subscriptionOpts: SubscriptionOpts,
+ public async getLogsAsync(tokenAddress: string, eventName: TokenEvents, subscriptionOpts: SubscriptionOpts,
indexFilterValues: IndexedFilterValues): Promise<Array<LogWithDecodedArgs|RawLog>> {
- // TODO include indexFilterValues in topics
- const eventSignature = this._getEventSignatureFromAbiByName(artifacts.TokenArtifact.abi, eventName);
- const filter = {
- fromBlock: subscriptionOpts.fromBlock,
- toBlock: subscriptionOpts.toBlock,
- address: tokenAddress,
- topics: [this._web3Wrapper.keccak256(eventSignature)],
- };
- const logs = await this._web3Wrapper.getLogsAsync(filter);
- const logsWithDecodedArguments = _.map(logs, this._tryToDecodeLogOrNoOp.bind(this));
- return logsWithDecodedArguments;
+ const logs = await this._getLogsAsync(
+ tokenAddress, eventName, subscriptionOpts, indexFilterValues, artifacts.TokenArtifact.abi,
+ );
+ return logs;
}
/**
* Stops watching for all token events