diff options
author | frankiebee <frankie.diamond@gmail.com> | 2018-07-11 02:32:05 +0800 |
---|---|---|
committer | frankiebee <frankie.diamond@gmail.com> | 2018-07-11 02:32:05 +0800 |
commit | 28c509914bf09850dd9aaef52b212f6271633e93 (patch) | |
tree | 049373cf51ae16580a5f18dd29e195e68d4f7b53 /ui/app/components/send_/send.utils.js | |
parent | 94a4f99115cf549a3014d29d828e7a432bf36a62 (diff) | |
parent | f6de948e42ae633d40aef72595a01caa622a280d (diff) | |
download | tangerine-wallet-browser-28c509914bf09850dd9aaef52b212f6271633e93.tar tangerine-wallet-browser-28c509914bf09850dd9aaef52b212f6271633e93.tar.gz tangerine-wallet-browser-28c509914bf09850dd9aaef52b212f6271633e93.tar.bz2 tangerine-wallet-browser-28c509914bf09850dd9aaef52b212f6271633e93.tar.lz tangerine-wallet-browser-28c509914bf09850dd9aaef52b212f6271633e93.tar.xz tangerine-wallet-browser-28c509914bf09850dd9aaef52b212f6271633e93.tar.zst tangerine-wallet-browser-28c509914bf09850dd9aaef52b212f6271633e93.zip |
Merge branch 'develop' of https://github.com/MetaMask/metamask-extension into i#3896
Diffstat (limited to 'ui/app/components/send_/send.utils.js')
-rw-r--r-- | ui/app/components/send_/send.utils.js | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/ui/app/components/send_/send.utils.js b/ui/app/components/send_/send.utils.js index dfd459731..c4537f335 100644 --- a/ui/app/components/send_/send.utils.js +++ b/ui/app/components/send_/send.utils.js @@ -10,6 +10,7 @@ const { calcTokenAmount, } = require('../../token-util') const { + BASE_TOKEN_GAS_COST, INSUFFICIENT_FUNDS_ERROR, INSUFFICIENT_TOKENS_ERROR, NEGATIVE_ETH_ERROR, @@ -29,9 +30,11 @@ module.exports = { estimateGasPriceFromRecentBlocks, generateTokenTransferData, getAmountErrorObject, + getGasFeeErrorObject, getToAddressForGasUpdate, isBalanceSufficient, isTokenBalanceSufficient, + removeLeadingZeroes, } function calcGasTotal (gasLimit, gasPrice) { @@ -108,9 +111,9 @@ function getAmountErrorObject ({ tokenBalance, }) { let insufficientFunds = false - if (gasTotal && conversionRate) { + if (gasTotal && conversionRate && !selectedToken) { insufficientFunds = !isBalanceSufficient({ - amount: selectedToken ? '0x0' : amount, + amount, amountConversionRate, balance, conversionRate, @@ -147,6 +150,34 @@ function getAmountErrorObject ({ return { amount: amountError } } +function getGasFeeErrorObject ({ + amount, + amountConversionRate, + balance, + conversionRate, + gasTotal, + primaryCurrency, +}) { + let gasFeeError = null + + if (gasTotal && conversionRate) { + const insufficientFunds = !isBalanceSufficient({ + amount: '0x0', + amountConversionRate, + balance, + conversionRate, + gasTotal, + primaryCurrency, + }) + + if (insufficientFunds) { + gasFeeError = INSUFFICIENT_FUNDS_ERROR + } + } + + return { gasFee: gasFeeError } +} + function calcTokenBalance ({ selectedToken, usersToken }) { const { decimals } = selectedToken || {} return calcTokenAmount(usersToken.balance.toString(), decimals) + '' @@ -183,6 +214,8 @@ async function estimateGas ({ selectedAddress, selectedToken, blockGasLimit, to, if (!code || code === '0x') { return SIMPLE_GAS_COST } + } else if (selectedToken && !to) { + return BASE_TOKEN_GAS_COST } paramsForGasEstimate.to = selectedToken ? selectedToken.address : to @@ -273,3 +306,7 @@ function estimateGasPriceFromRecentBlocks (recentBlocks) { function getToAddressForGasUpdate (...addresses) { return [...addresses, ''].find(str => str !== undefined && str !== null).toLowerCase() } + +function removeLeadingZeroes (str) { + return str.replace(/^0*(?=\d)/, '') +} |