Commit 1b8a723d authored by Alex Beregszaszi's avatar Alex Beregszaszi

Use async.waterfall in runTx

parent 7ff0654b
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
"test": "node test/index.js" "test": "node test/index.js"
}, },
"devDependencies": { "devDependencies": {
"async": "^2.1.2",
"babel-cli": "^6.16.0", "babel-cli": "^6.16.0",
"babel-plugin-transform-es2015-block-scoping": "^6.15.0", "babel-plugin-transform-es2015-block-scoping": "^6.15.0",
"babel-plugin-transform-es2015-template-literals": "^6.8.0", "babel-plugin-transform-es2015-template-literals": "^6.8.0",
......
...@@ -9,6 +9,7 @@ var EthJSBlock = require('ethereumjs-block') ...@@ -9,6 +9,7 @@ var EthJSBlock = require('ethereumjs-block')
var BN = ethJSUtil.BN var BN = ethJSUtil.BN
var EventManager = require('./lib/eventManager') var EventManager = require('./lib/eventManager')
var crypto = require('crypto') var crypto = require('crypto')
var async = require('async')
/* /*
trigger debugRequested trigger debugRequested
...@@ -679,41 +680,61 @@ function tryTillResponse (web3, txhash, done) { ...@@ -679,41 +680,61 @@ function tryTillResponse (web3, txhash, done) {
UniversalDApp.prototype.runTx = function (args, cb) { UniversalDApp.prototype.runTx = function (args, cb) {
var self = this var self = this
var tx = {
to: args.to,
data: args.data
}
async.waterfall([
// query gas limit
function (callback) {
tx.gasLimit = 3000000
var gasLimit = 3000000 // NOTE: getGasLimit should be async
if (self.getGasLimit) { if (self.getGasLimit) {
try { try {
gasLimit = self.getGasLimit() tx.gasLimit = self.getGasLimit()
callback()
} catch (e) { } catch (e) {
return cb(e) callback(e)
} }
} else {
callback()
} }
},
// query value
function (callback) {
tx.value = 0
var value = 0 // NOTE: getValue should be async
if (self.getValue) { if (self.getValue) {
try { try {
value = self.getValue() tx.value = self.getValue()
callback()
} catch (e) { } catch (e) {
return cb(e) callback(e)
} }
} else {
callback()
} }
},
var from // query address
function (callback) {
// NOTE: getAddress should be async
if (self.getAddress) { if (self.getAddress) {
from = self.getAddress() tx.from = self.getAddress()
} else if (self.executionContext.isVM()) { } else if (self.executionContext.isVM()) {
from = Object.keys(self.accounts)[0] tx.from = Object.keys(self.accounts)[0]
} else { } else {
from = self.web3.eth.accounts[0] tx.from = self.web3.eth.accounts[0]
} }
callback()
return this.rawRunTx({ },
from: args.from, // run transaction
to: args.to, function (callback) {
data: args.data, self.rawRunTx(tx, callback)
value: value, }
gasLimit: gasLimit ], cb)
}, cb)
} }
UniversalDApp.prototype.rawRunTx = function (args, cb) { UniversalDApp.prototype.rawRunTx = function (args, cb) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment