From f772ce111ea86d92c56abab37e1a1ebece91e768 Mon Sep 17 00:00:00 2001 From: ricmoo Date: Tue, 4 Apr 2017 17:33:47 -0400 Subject: [PATCH] Renamed "execute" to "functions". Use signer estimateGas if possible. --- contracts/contract.js | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/contracts/contract.js b/contracts/contract.js index 04e6d99d0..9d81419ed 100644 --- a/contracts/contract.js +++ b/contracts/contract.js @@ -96,11 +96,10 @@ function Contract(address, contractInterface, signerOrProvider) { var fromPromise = null; if (transaction.from == null && signer && signer.getAddress) { - fromPromise = new Promise(function(resolve, reject) { - var address = signer.getAddress(); - if (address instanceof Promise) { return address; } - resolve(address); - }); + fromPromise = signer.getAddress(); + if (!(address instanceof Promise)) { + fromPromise = Promise.resolve(fromPromise); + } } else { fromPromise = Promise.resolve(null); } @@ -110,6 +109,7 @@ function Contract(address, contractInterface, signerOrProvider) { transaction.from = utils.getAddress(address); } return provider.call(transaction); + }).then(function(value) { return call.parse(value); }); @@ -124,6 +124,10 @@ function Contract(address, contractInterface, signerOrProvider) { // Only computing the transaction estimate if (estimateOnly) { + if (signer && signer.estimateGas) { + return signer.estimateGas(transaction); + } + return provider.estimateGas(transaction) } @@ -132,6 +136,10 @@ function Contract(address, contractInterface, signerOrProvider) { return signer.sendTransaction(transaction); } + if (!signer.sign) { + return Promise.reject(new Error('custom signer does not support signing')); + } + if (transaction.gasLimit == null) { transaction.gasLimit = signer.defaultGasLimit || 2000000; } @@ -169,8 +177,8 @@ function Contract(address, contractInterface, signerOrProvider) { var estimate = {}; utils.defineProperty(this, 'estimate', estimate); - var execute = {}; - utils.defineProperty(this, 'execute', execute); + var functions = {}; + utils.defineProperty(this, 'functions', functions); var events = {}; utils.defineProperty(this, 'events', events); @@ -186,8 +194,8 @@ function Contract(address, contractInterface, signerOrProvider) { console.log('WARNING: Multiple definitions for ' + method); } - if (execute[method] == null) { - utils.defineProperty(execute, methodName, run); + if (functions[method] == null) { + utils.defineProperty(functions, methodName, run); utils.defineProperty(estimate, methodName, runMethod(method, true)); } }, this);