Add tryToDecodeLogOrNoOp and _getEventSignatureFromAbiByName on contract_wrapper
This commit is contained in:
		@@ -1,13 +1,23 @@
 | 
				
			|||||||
import * as _ from 'lodash';
 | 
					import * as _ from 'lodash';
 | 
				
			||||||
import * as Web3 from 'web3';
 | 
					import * as Web3 from 'web3';
 | 
				
			||||||
import {Web3Wrapper} from '../web3_wrapper';
 | 
					import {Web3Wrapper} from '../web3_wrapper';
 | 
				
			||||||
import {ZeroExError, Artifact} from '../types';
 | 
					import {AbiDecoder} from '../utils/abi_decoder';
 | 
				
			||||||
 | 
					import {ZeroExError, Artifact, LogWithDecodedArgs, RawLog, ContractEvents} from '../types';
 | 
				
			||||||
import {utils} from '../utils/utils';
 | 
					import {utils} from '../utils/utils';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class ContractWrapper {
 | 
					export class ContractWrapper {
 | 
				
			||||||
    protected _web3Wrapper: Web3Wrapper;
 | 
					    protected _web3Wrapper: Web3Wrapper;
 | 
				
			||||||
    constructor(web3Wrapper: Web3Wrapper) {
 | 
					    private _abiDecoder?: AbiDecoder;
 | 
				
			||||||
 | 
					    constructor(web3Wrapper: Web3Wrapper, abiDecoder?: AbiDecoder) {
 | 
				
			||||||
        this._web3Wrapper = web3Wrapper;
 | 
					        this._web3Wrapper = web3Wrapper;
 | 
				
			||||||
 | 
					        this._abiDecoder = abiDecoder;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    protected tryToDecodeLogOrNoOp(log: Web3.LogEntry): LogWithDecodedArgs|RawLog {
 | 
				
			||||||
 | 
					        if (_.isUndefined(this._abiDecoder)) {
 | 
				
			||||||
 | 
					            throw new Error(ZeroExError.NoAbiDecoder);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        const logWithDecodedArgs = this._abiDecoder.tryToDecodeLogOrNoOp(log);
 | 
				
			||||||
 | 
					        return logWithDecodedArgs;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    protected async _instantiateContractIfExistsAsync<A extends Web3.ContractInstance>(artifact: Artifact,
 | 
					    protected async _instantiateContractIfExistsAsync<A extends Web3.ContractInstance>(artifact: Artifact,
 | 
				
			||||||
                                                                                       addressIfExists?: string,
 | 
					                                                                                       addressIfExists?: string,
 | 
				
			||||||
@@ -16,4 +26,10 @@ export class ContractWrapper {
 | 
				
			|||||||
            await this._web3Wrapper.getContractInstanceFromArtifactAsync<A>(artifact, addressIfExists);
 | 
					            await this._web3Wrapper.getContractInstanceFromArtifactAsync<A>(artifact, addressIfExists);
 | 
				
			||||||
        return contractInstance;
 | 
					        return contractInstance;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    protected _getEventSignatureFromAbiByName(abi: Web3.ContractAbi, eventName: ContractEvents): string {
 | 
				
			||||||
 | 
					        const eventAbi = _.filter(abi, {name: eventName})[0] as Web3.EventAbi;
 | 
				
			||||||
 | 
					        const types = _.map(eventAbi.inputs, 'type');
 | 
				
			||||||
 | 
					        const signature = `${eventAbi.name}(${types.join(',')})`;
 | 
				
			||||||
 | 
					        return signature;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user