diff options
author | Frankie <frankie.pangilinan@consensys.net> | 2016-09-16 01:24:05 +0800 |
---|---|---|
committer | Frankie <frankie.pangilinan@consensys.net> | 2016-09-16 01:24:05 +0800 |
commit | ef0b535d94d97827b4bfc471e4d950d90d637fa3 (patch) | |
tree | 1f59298dffe5992e3e1552b0460dd442aa3412c9 /ui/app/components | |
parent | 17eb53cfcd77b3832f92533a53d82726d1e152e7 (diff) | |
download | tangerine-wallet-browser-ef0b535d94d97827b4bfc471e4d950d90d637fa3.tar tangerine-wallet-browser-ef0b535d94d97827b4bfc471e4d950d90d637fa3.tar.gz tangerine-wallet-browser-ef0b535d94d97827b4bfc471e4d950d90d637fa3.tar.bz2 tangerine-wallet-browser-ef0b535d94d97827b4bfc471e4d950d90d637fa3.tar.lz tangerine-wallet-browser-ef0b535d94d97827b4bfc471e4d950d90d637fa3.tar.xz tangerine-wallet-browser-ef0b535d94d97827b4bfc471e4d950d90d637fa3.tar.zst tangerine-wallet-browser-ef0b535d94d97827b4bfc471e4d950d90d637fa3.zip |
Drop the buy button in the confTx view if account does not have enough eth
Diffstat (limited to 'ui/app/components')
-rw-r--r-- | ui/app/components/buy-button-subview.js | 11 | ||||
-rw-r--r-- | ui/app/components/pending-tx-details.js | 4 | ||||
-rw-r--r-- | ui/app/components/pending-tx.js | 37 |
3 files changed, 44 insertions, 8 deletions
diff --git a/ui/app/components/buy-button-subview.js b/ui/app/components/buy-button-subview.js index c3e9e5d7b..7daf41206 100644 --- a/ui/app/components/buy-button-subview.js +++ b/ui/app/components/buy-button-subview.js @@ -16,6 +16,7 @@ function mapStateToProps (state) { buyView: state.appState.buyView, network: state.metamask.network, provider: state.metamask.provider, + context: state.appState.currentView.context, } } @@ -38,7 +39,7 @@ BuyButtonSubview.prototype.render = function () { }, }, [ h('i.fa.fa-arrow-left.fa-lg.cursor-pointer.color-orange', { - onClick: () => props.dispatch(actions.backToAccountDetail(props.selectedAccount)), + onClick: this.backButtonContext.bind(this), style: { position: 'absolute', left: '10px', @@ -121,3 +122,11 @@ BuyButtonSubview.prototype.formVersionSubview = function () { BuyButtonSubview.prototype.navigateTo = function (url) { extension.tabs.create({ url }) } + +BuyButtonSubview.prototype.backButtonContext = function () { + if (this.props.context === 'confTx') { + this.props.dispatch(actions.showConfTxPage(false)) + } else { + this.props.dispatch(actions.goHome()) + } +} diff --git a/ui/app/components/pending-tx-details.js b/ui/app/components/pending-tx-details.js index 148b5c6df..d8e8524bf 100644 --- a/ui/app/components/pending-tx-details.js +++ b/ui/app/components/pending-tx-details.js @@ -4,12 +4,12 @@ const inherits = require('util').inherits const MiniAccountPanel = require('./mini-account-panel') const EthBalance = require('./eth-balance') -const addressSummary = require('../util').addressSummary +const util = require('../util') +const addressSummary = util.addressSummary const nameForAddress = require('../../lib/contract-namer') const ethUtil = require('ethereumjs-util') const BN = ethUtil.BN - module.exports = PendingTxDetails inherits(PendingTxDetails, Component) diff --git a/ui/app/components/pending-tx.js b/ui/app/components/pending-tx.js index 1feedbbbc..61e40af0e 100644 --- a/ui/app/components/pending-tx.js +++ b/ui/app/components/pending-tx.js @@ -3,6 +3,8 @@ const h = require('react-hyperscript') const inherits = require('util').inherits const PendingTxDetails = require('./pending-tx-details') +const ethUtil = require('ethereumjs-util') +const BN = ethUtil.BN module.exports = PendingTx @@ -14,7 +16,6 @@ function PendingTx () { PendingTx.prototype.render = function () { var state = this.props var txData = state.txData - return ( h('div', { @@ -39,10 +40,8 @@ PendingTx.prototype.render = function () { margin: '14px 25px', }, }, [ - h('button.confirm', { - onClick: state.sendTransaction, - style: { background: 'rgb(251,117,1)' }, - }, 'Accept'), + + this.buttonDeligator(), h('button.cancel', { onClick: state.cancelTransaction, @@ -53,3 +52,31 @@ PendingTx.prototype.render = function () { ) } +PendingTx.prototype.buttonDeligator = function () { + var state = this.props + var txData = state.txData + var txParams = txData.txParams || {} + var address = txParams.from || state.selectedAddress + + var account = state.accounts[address] + var balance = account ? account.balance : '0x0' + + var gasCost = new BN(ethUtil.stripHexPrefix(txParams.gas || txData.estimatedGas), 16) + var gasPrice = new BN(ethUtil.stripHexPrefix(txParams.gasPrice || '0x4a817c800'), 16) + var txFee = gasCost.mul(gasPrice) + var txValue = new BN(ethUtil.stripHexPrefix(txParams.value || '0x0'), 16) + var maxCost = txValue.add(txFee) + + var balanceBn = new BN(ethUtil.stripHexPrefix(balance), 16) + if (maxCost.gt(balanceBn)) { + return h('button.confirm', { + onClick: state.sendTransaction, + style: { background: 'rgb(251,117,1)' }, + }, 'Buy') + } else { + return h('button.confirm', { + onClick: state.sendTransaction, + style: { background: 'rgb(251,117,1)' }, + }, 'Accept') + } +} |