From 9c0f3cae6881b980fab841f7c98307aa80b6cee4 Mon Sep 17 00:00:00 2001 From: yann300 Date: Wed, 28 Mar 2018 12:43:28 +0200 Subject: [PATCH 1/5] add function executeTx & sendTransaction to instance trigger transactionBroadcasted --- remix-lib/src/execution/execution-context.js | 15 +++++++ remix-lib/src/execution/txRunner.js | 43 +++++++++++--------- 2 files changed, 39 insertions(+), 19 deletions(-) diff --git a/remix-lib/src/execution/execution-context.js b/remix-lib/src/execution/execution-context.js index 5e3f4dfe0c..f2f3ba8d39 100644 --- a/remix-lib/src/execution/execution-context.js +++ b/remix-lib/src/execution/execution-context.js @@ -235,6 +235,21 @@ function ExecutionContext () { } } this.setProviderFromEndpoint = setProviderFromEndpoint + + this.txDetailsLink = function (network, hash) { + if (transactionDetailsLinks[network]) { + return transactionDetailsLinks[network] + hash + } + } +} + + + +var transactionDetailsLinks = { + 'Main': 'https://www.etherscan.io/tx/', + 'Rinkeby': 'https://rinkeby.etherscan.io/tx/', + 'Ropsten': 'https://ropsten.etherscan.io//tx/', + 'Kovan': 'https://kovan.etherscan.io/tx/' } module.exports = new ExecutionContext() diff --git a/remix-lib/src/execution/txRunner.js b/remix-lib/src/execution/txRunner.js index 613427042e..88cc86f17e 100644 --- a/remix-lib/src/execution/txRunner.js +++ b/remix-lib/src/execution/txRunner.js @@ -4,8 +4,10 @@ var EthJSBlock = require('ethereumjs-block') var ethJSUtil = require('ethereumjs-util') var BN = ethJSUtil.BN var executionContext = require('./execution-context') +var EventManager = require('../eventManager') function TxRunner (vmaccounts, api) { + this.event = new EventManager() this._api = api this.blockNumber = 0 this.runAsync = true @@ -22,19 +24,36 @@ TxRunner.prototype.rawRun = function (args, confirmationCb, gasEstimationForceSe run(this, args, Date.now(), confirmationCb, gasEstimationForceSend, promptCb, cb) } -function executeTx (tx, gasPrice, api, promptCb, callback) { +TxRunner.prototype._executeTx = function (tx, gasPrice, api, promptCb, callback) { if (gasPrice) tx.gasPrice = executionContext.web3().toHex(gasPrice) if (api.personalMode()) { promptCb( (value) => { - sendTransaction(executionContext.web3().personal.sendTransaction, tx, value, callback) + this._sendTransaction(executionContext.web3().personal.sendTransaction, tx, value, callback) }, () => { return callback('Canceled by user.') } ) } else { - sendTransaction(executionContext.web3().eth.sendTransaction, tx, null, callback) + this._sendTransaction(executionContext.web3().eth.sendTransaction, tx, null, callback) + } +} + +TxRunner.prototype._sendTransaction = function (sendTx, tx, pass, callback) { + var self = this + var cb = function (err, resp) { + if (err) { + return callback(err, resp) + } + self.event.trigger('transactionBroadcasted', [resp]) + tryTillResponse(resp, callback) + } + var args = pass !== null ? [tx, pass, cb] : [tx, cb] + try { + sendTx.apply({}, args) + } catch (e) { + return callback(`Send transaction failed: ${e.message} . if you use an injected provider, please check it is properly unlocked. `) } } @@ -124,7 +143,7 @@ TxRunner.prototype.runInNode = function (from, to, data, value, gasLimit, useCal tx.gas = !gasEstimation ? gasLimit : gasEstimation if (self._api.config.getUnpersistedProperty('doNotShowTransactionConfirmationAgain')) { - return executeTx(tx, null, self._api, promptCb, callback) + return self._executeTx(tx, null, self._api, promptCb, callback) } self._api.detectNetwork((err, network) => { @@ -134,7 +153,7 @@ TxRunner.prototype.runInNode = function (from, to, data, value, gasLimit, useCal } confirmCb(network, tx, tx.gas, (gasPrice) => { - return executeTx(tx, gasPrice, self._api, promptCb, callback) + return self._executeTx(tx, gasPrice, self._api, promptCb, callback) }, (error) => { callback(error) }) @@ -172,20 +191,6 @@ function tryTillResponse (txhash, done) { }) } -function sendTransaction (sendTx, tx, pass, callback) { - var cb = function (err, resp) { - if (err) { - return callback(err, resp) - } - tryTillResponse(resp, callback) - } - var args = pass !== null ? [tx, pass, cb] : [tx, cb] - try { - sendTx.apply({}, args) - } catch (e) { - return callback(`Send transaction failed: ${e.message} . if you use an injected provider, please check it is properly unlocked. `) - } -} function run (self, tx, stamp, confirmationCb, gasEstimationForceSend, promptCb, callback) { if (!self.runAsync && Object.keys(self.pendingTxs).length) { From 757d6890d7e93911bdbd853c3d5207f8fc0f1004 Mon Sep 17 00:00:00 2001 From: yann300 Date: Wed, 28 Mar 2018 12:43:45 +0200 Subject: [PATCH 2/5] standard --- remix-lib/src/execution/execution-context.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/remix-lib/src/execution/execution-context.js b/remix-lib/src/execution/execution-context.js index f2f3ba8d39..8a4da0ce15 100644 --- a/remix-lib/src/execution/execution-context.js +++ b/remix-lib/src/execution/execution-context.js @@ -243,8 +243,6 @@ function ExecutionContext () { } } - - var transactionDetailsLinks = { 'Main': 'https://www.etherscan.io/tx/', 'Rinkeby': 'https://rinkeby.etherscan.io/tx/', From 55dd41303699795f78dada67bff925cf2dc2e550 Mon Sep 17 00:00:00 2001 From: yann300 Date: Wed, 28 Mar 2018 12:46:25 +0200 Subject: [PATCH 3/5] standard --- remix-lib/src/execution/txRunner.js | 1 - 1 file changed, 1 deletion(-) diff --git a/remix-lib/src/execution/txRunner.js b/remix-lib/src/execution/txRunner.js index 88cc86f17e..867ee4021c 100644 --- a/remix-lib/src/execution/txRunner.js +++ b/remix-lib/src/execution/txRunner.js @@ -191,7 +191,6 @@ function tryTillResponse (txhash, done) { }) } - function run (self, tx, stamp, confirmationCb, gasEstimationForceSend, promptCb, callback) { if (!self.runAsync && Object.keys(self.pendingTxs).length) { self.queusTxs.push({ tx, stamp, callback }) From d132850a7d0ef58cf0a13f6656df2eae47410649 Mon Sep 17 00:00:00 2001 From: yann300 Date: Wed, 28 Mar 2018 12:52:36 +0200 Subject: [PATCH 4/5] typo --- remix-lib/src/execution/execution-context.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/remix-lib/src/execution/execution-context.js b/remix-lib/src/execution/execution-context.js index 8a4da0ce15..8e0d9dd0af 100644 --- a/remix-lib/src/execution/execution-context.js +++ b/remix-lib/src/execution/execution-context.js @@ -246,7 +246,7 @@ function ExecutionContext () { var transactionDetailsLinks = { 'Main': 'https://www.etherscan.io/tx/', 'Rinkeby': 'https://rinkeby.etherscan.io/tx/', - 'Ropsten': 'https://ropsten.etherscan.io//tx/', + 'Ropsten': 'https://ropsten.etherscan.io/tx/', 'Kovan': 'https://kovan.etherscan.io/tx/' } From 64ddd58f9573f7bdb66272b6313965dbf4e184a4 Mon Sep 17 00:00:00 2001 From: yann300 Date: Wed, 28 Mar 2018 12:56:48 +0200 Subject: [PATCH 5/5] bump version --- remix-lib/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/remix-lib/package.json b/remix-lib/package.json index 63c059bf7d..184d0bd228 100644 --- a/remix-lib/package.json +++ b/remix-lib/package.json @@ -1,6 +1,6 @@ { "name": "remix-lib", - "version": "0.2.0-alpha.1", + "version": "0.2.0-alpha.2", "description": "Ethereum IDE and tools for the web", "contributors": [ {