Add getExchangeInstanceOrThrowAsync && getSenderAddressOrThrowAsync

This commit is contained in:
Leonid Logvinov 2017-05-29 22:14:18 +02:00
parent 34de598642
commit 7dddf2010e
No known key found for this signature in database
GPG Key ID: 0DD294BFDE8C95D4
2 changed files with 14 additions and 6 deletions

View File

@ -16,11 +16,8 @@ export class ExchangeWrapper extends ContractWrapper {
assert.doesConformToSchema('ecSignature', ecSignature, ecSignatureSchema);
assert.isETHAddressHex('signerAddressHex', signerAddressHex);
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;
const senderAddress = await this.web3Wrapper.getSenderAddressOrThrowAsync();
const exchangeInstance = await this.getExchangeInstanceOrThrowAsync();
const isValidSignature = await exchangeInstance.isValidSignature.call(
signerAddressHex,
@ -29,9 +26,13 @@ export class ExchangeWrapper extends ContractWrapper {
ecSignature.r,
ecSignature.s,
{
from: senderAddressIfExists,
from: senderAddress,
},
);
return isValidSignature;
}
private async getExchangeInstanceOrThrowAsync(): Promise<ExchangeContract> {
const contractInstance = await this.instantiateContractIfExistsAsync((ExchangeArtifacts as any));
return contractInstance as ExchangeContract;
}
}

View File

@ -2,6 +2,8 @@ import * as _ from 'lodash';
import * as Web3 from 'web3';
import * as BigNumber from 'bignumber.js';
import promisify = require('es6-promisify');
import {ZeroExError} from "./types";
import {assert} from "./utils/assert";
export class Web3Wrapper {
private web3: Web3;
@ -20,6 +22,11 @@ export class Web3Wrapper {
const firstAccount = await this.getFirstAddressIfExistsAsync();
return firstAccount;
}
public async getSenderAddressOrThrowAsync(): Promise<string> {
const senderAddressIfExists = await this.getSenderAddressIfExistsAsync();
assert.assert(!_.isUndefined(senderAddressIfExists), ZeroExError.USER_HAS_NO_ASSOCIATED_ADDRESSES);
return senderAddressIfExists as string;
}
public async getFirstAddressIfExistsAsync(): Promise<string|undefined> {
const addresses = await promisify(this.web3.eth.getAccounts)();
if (_.isEmpty(addresses)) {