diff --git a/src/app.js b/src/app.js index ec152e7d6d..f10fe21caa 100644 --- a/src/app.js +++ b/src/app.js @@ -770,6 +770,15 @@ var run = function () { }, getAccounts: (callback) => { udapp.getAccounts(callback) + }, + getBalance: (address, callback) => { + udapp.getBalance(address, (error, balance) => { + if (error) { + callback(error) + } else { + callback(null, executionContext.web3().fromWei(balance, 'ether')) + } + }) } } var renderer = new Renderer(rendererAPI, compiler.event) diff --git a/src/app/renderer.js b/src/app/renderer.js index b252e111c4..c97106950c 100644 --- a/src/app/renderer.js +++ b/src/app/renderer.js @@ -3,6 +3,7 @@ var $ = require('jquery') var utils = require('./utils') +var helper = require('../lib/helper.js') // -------------- styling ---------------------- var csjs = require('csjs-inject') @@ -61,6 +62,7 @@ function Renderer (appAPI, compilerEvent) { }) } }) + setInterval(() => { updateAccountBalances(self, appAPI) }, 1000) } Renderer.prototype.clear = function () { @@ -344,4 +346,17 @@ Renderer.prototype.contracts = function (data, source) { $('.' + css.col2 + ' input,textarea').click(function () { this.select() }) } +function updateAccountBalances (self, appAPI) { + var accounts = $('#txorigin').children('option') + accounts.each(function (index, value) { + (function (acc) { + appAPI.getBalance(accounts[acc].value, function (err, res) { + if (!err) { + accounts[acc].innerText = helper.shortenAddress(accounts[acc].value, res) + } + }) + })(index) + }) +} + module.exports = Renderer diff --git a/src/lib/helper.js b/src/lib/helper.js new file mode 100644 index 0000000000..4d09e04b71 --- /dev/null +++ b/src/lib/helper.js @@ -0,0 +1,6 @@ +module.exports = { + shortenAddress: function (address, etherBalance) { + var len = address.length + return address.slice(0, 5) + '...' + address.slice(len - 5, len) + (etherBalance ? ' (' + etherBalance.toString() + ' ether)' : '') + } +} diff --git a/src/universal-dapp.js b/src/universal-dapp.js index fbedf2876c..72136ed3ef 100644 --- a/src/universal-dapp.js +++ b/src/universal-dapp.js @@ -9,6 +9,7 @@ var EventManager = require('ethereum-remix').lib.EventManager var crypto = require('crypto') var async = require('async') var TxRunner = require('./app/txRunner') +var helper = require('./lib/helper') var yo = require('yo-yo') // copy to copyToClipboard @@ -353,8 +354,7 @@ UniversalDApp.prototype.getInstanceInterface = function (contract, address, $tar var context = self.executionContext.isVM() ? 'memory' : 'blockchain' address = (address.slice(0, 2) === '0x' ? '' : '0x') + address.toString('hex') - var len = address.length - var shortAddress = address.slice(0, 5) + '...' + address.slice(len - 5, len) + var shortAddress = helper.shortenAddress(address) var title = yo`
${contract.name} at ${shortAddress} (${context})
@@ -366,7 +366,7 @@ UniversalDApp.prototype.getInstanceInterface = function (contract, address, $tar } function copyToClipboard (event) { - event.stopPropagation(); + event.stopPropagation() copy(address) }