diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 8a5ffb75a..63970799d 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -77,14 +77,13 @@ module.exports = class MetamaskController { // handle rpc request this.provider.sendAsync(request, function onPayloadHandled (err, response) { - if (err) { - return logger(err) - } - logger(null, request, response) - try { - stream.write(response) - } catch (err) { - logger(err) + logger(err, request, response) + if (response) { + try { + stream.write(response) + } catch (err) { + logger(err) + } } }) diff --git a/test/unit/util_test.js b/test/unit/util_test.js index 41355686e..28f76fcf1 100644 --- a/test/unit/util_test.js +++ b/test/unit/util_test.js @@ -148,22 +148,35 @@ describe('util', function() { it('when given nothing', function() { var result = util.formatBalance() + assert.equal(result, 'None', 'should return "None"') + }) + + it('should return eth as string followed by ETH', function() { + var input = new ethUtil.BN(ethInWei, 10).toJSON() + var result = util.formatBalance(input, 4) + assert.equal(result, '1.0000 ETH') + }) + + it('should return eth as string followed by ETH', function() { + var input = new ethUtil.BN(ethInWei, 10).div(new ethUtil.BN('2', 10)).toJSON() + var result = util.formatBalance(input, 3) + assert.equal(result, '0.500 ETH') }) it('should display specified decimal points', function() { var input = "0x128dfa6a90b28000" var result = util.formatBalance(input, 2) - assert.equal(result.formatted, '1.33 ETH') + assert.equal(result, '1.33 ETH') }) - it('should default to 2 decimal points', function() { + it('should default to 3 decimal points', function() { var input = "0x128dfa6a90b28000" var result = util.formatBalance(input) - assert.equal(result.formatted, '1.33 ETH') + assert.equal(result, '1.337 ETH') }) it('should show 2 significant digits for tiny balances', function() { var input = "0x1230fa6a90b28" var result = util.formatBalance(input) - assert.equal(result.formatted, '0.00032 ETH') + assert.equal(result, '0.00032 ETH') }) }) diff --git a/ui/app/components/eth-balance.js b/ui/app/components/eth-balance.js index 288a0fcaf..113e698ad 100644 --- a/ui/app/components/eth-balance.js +++ b/ui/app/components/eth-balance.js @@ -2,7 +2,6 @@ const Component = require('react').Component const h = require('react-hyperscript') const inherits = require('util').inherits const formatBalance = require('../util').formatBalance -const Tooltip = require('./tooltip') module.exports = EthBalanceComponent @@ -32,32 +31,28 @@ EthBalanceComponent.prototype.render = function () { ) } EthBalanceComponent.prototype.renderBalance = function (value) { + if (value === 'None') return value - var balance = value.formatted.split(' ')[0] - var label = value.formatted.split(' ')[1] + var balance = value.split(' ')[0] + var label = value.split(' ')[1] return ( - h(Tooltip, { - title: value.balance, - position: 'bottom', + h('.flex-column', { + style: { + alignItems: 'flex-end', + lineHeight: '13px', + fontFamily: 'Montserrat Thin', + textRendering: 'geometricPrecision', + }, }, [ - h('.flex-column', { + h('div', balance), + h('div', { style: { - alignItems: 'flex-end', - lineHeight: '13px', - fontFamily: 'Montserrat Light', - textRendering: 'geometricPrecision', + color: ' #AEAEAE', + fontSize: '12px', }, - }, [ - h('div', balance), - h('div', { - style: { - color: ' #AEAEAE', - fontSize: '12px', - }, - }, label), - ]), + }, label), ]) ) } diff --git a/ui/app/util.js b/ui/app/util.js index 0a243387a..89853d746 100644 --- a/ui/app/util.js +++ b/ui/app/util.js @@ -110,29 +110,22 @@ function formatBalance (balance, decimalsToKeep) { var parsed = parseBalance(balance) var beforeDecimal = parsed[0] var afterDecimal = parsed[1] - var formatted, formattedBalance - - if (beforeDecimal === '0') { - if (afterDecimal !== '0') { - var sigFigs = afterDecimal.match(/^0*(.{2})/) // default: grabs 2 most significant digits - if (sigFigs) { afterDecimal = sigFigs[0] } - formattedBalance = afterDecimal.substr(0, 5) === '00000' ? '<0.00001' : `0.${afterDecimal.slice(0, 6)}` + var formatted = 'None' + if (decimalsToKeep === undefined) { + if (beforeDecimal === '0') { + if (afterDecimal !== '0') { + var sigFigs = afterDecimal.match(/^0*(.{2})/) // default: grabs 2 most significant digits + if (sigFigs) { afterDecimal = sigFigs[0] } + formatted = '0.' + afterDecimal + ' ETH' + } + } else { + formatted = beforeDecimal + '.' + afterDecimal.slice(0, 3) + ' ETH' } } else { - formattedBalance = `${beforeDecimal}.${afterDecimal.slice(0, 2)}` - } - if (decimalsToKeep) { - formattedBalance = `${beforeDecimal}.${afterDecimal.slice(0, decimalsToKeep)}` - } - - formatted = `${formattedBalance} ETH` - - if (formattedBalance === '0.0' || formattedBalance === undefined) { - formatted = 'None' - formattedBalance = 'None' + afterDecimal += Array(decimalsToKeep).join('0') + formatted = beforeDecimal + '.' + afterDecimal.slice(0, decimalsToKeep) + ' ETH' } - - return {formattedBalance, balance: parsed.join('.'), formatted} + return formatted } function dataSize (data) {