diff options
author | Dan Finlay <542863+danfinlay@users.noreply.github.com> | 2017-12-29 06:55:42 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-29 06:55:42 +0800 |
commit | a22e98910d31ab1f79c0b23cb9b4c375ee0c84c3 (patch) | |
tree | ee887e716a21f8418476981f852a661c06bbdd07 /ui/app | |
parent | 06f496310ce7d719bbb5690f307db143ba57a1a7 (diff) | |
parent | c3d85c0a66676a15b598424e379610237243cb10 (diff) | |
download | tangerine-wallet-browser-a22e98910d31ab1f79c0b23cb9b4c375ee0c84c3.tar tangerine-wallet-browser-a22e98910d31ab1f79c0b23cb9b4c375ee0c84c3.tar.gz tangerine-wallet-browser-a22e98910d31ab1f79c0b23cb9b4c375ee0c84c3.tar.bz2 tangerine-wallet-browser-a22e98910d31ab1f79c0b23cb9b4c375ee0c84c3.tar.lz tangerine-wallet-browser-a22e98910d31ab1f79c0b23cb9b4c375ee0c84c3.tar.xz tangerine-wallet-browser-a22e98910d31ab1f79c0b23cb9b4c375ee0c84c3.tar.zst tangerine-wallet-browser-a22e98910d31ab1f79c0b23cb9b4c375ee0c84c3.zip |
Merge pull request #2818 from MetaMask/i2782-ethroundingerror
Fix rounding error in ether input on send screen
Diffstat (limited to 'ui/app')
-rw-r--r-- | ui/app/send.js | 18 | ||||
-rw-r--r-- | ui/app/util.js | 3 |
2 files changed, 20 insertions, 1 deletions
diff --git a/ui/app/send.js b/ui/app/send.js index e59c1130e..09c9e03d4 100644 --- a/ui/app/send.js +++ b/ui/app/send.js @@ -247,10 +247,26 @@ SendTransactionScreen.prototype.onSubmit = function () { const recipient = state.recipient || document.querySelector('input[name="address"]').value.replace(/^[.\s]+|[.\s]+$/g, '') const nickname = state.nickname || ' ' const input = document.querySelector('input[name="amount"]').value + const parts = input.split('') + + let message + + if (isNaN(input) || input === '') { + message = 'Invalid ether value.' + return this.props.dispatch(actions.displayWarning(message)) + } + + if (parts[1]) { + var decimal = parts[1] + if (decimal.length > 18) { + message = 'Ether amount is too precise.' + return this.props.dispatch(actions.displayWarning(message)) + } + } + const value = util.normalizeEthStringToWei(input) const txData = document.querySelector('input[name="txData"]').value const balance = this.props.balance - let message if (value.gt(balance)) { message = 'Insufficient funds.' diff --git a/ui/app/util.js b/ui/app/util.js index 3f8b4dcc3..293f4228c 100644 --- a/ui/app/util.js +++ b/ui/app/util.js @@ -193,6 +193,9 @@ function normalizeEthStringToWei (str) { while (decimal.length < 18) { decimal += '0' } + if (decimal.length > 18) { + decimal = decimal.slice(0, 18) + } const decimalBN = new ethUtil.BN(decimal, 10) eth = eth.add(decimalBN) } |