aboutsummaryrefslogtreecommitdiffstats
path: root/ui/app/components/pending-tx-details.js
diff options
context:
space:
mode:
Diffstat (limited to 'ui/app/components/pending-tx-details.js')
-rw-r--r--ui/app/components/pending-tx-details.js30
1 files changed, 25 insertions, 5 deletions
diff --git a/ui/app/components/pending-tx-details.js b/ui/app/components/pending-tx-details.js
index e92ce575f..375a50f22 100644
--- a/ui/app/components/pending-tx-details.js
+++ b/ui/app/components/pending-tx-details.js
@@ -12,11 +12,17 @@ const addressSummary = util.addressSummary
const nameForAddress = require('../../lib/contract-namer')
const HexInput = require('./hex-as-decimal-input')
+const DEFAULT_GAS_PRICE_BN = new BN(20000000000, '10')
+const DEFAULT_GAS_PRICE = DEFAULT_GAS_PRICE_BN.toString(16)
+
+const MIN_GAS_PRICE_BN = new BN(20000000)
+
module.exports = PendingTxDetails
inherits(PendingTxDetails, Component)
function PendingTxDetails () {
Component.call(this)
+ this.state = { valid: true }
}
const PTXP = PendingTxDetails.prototype
@@ -36,6 +42,7 @@ PTXP.render = function () {
const gasPrice = (state.gasPrice === undefined) ? txData.gasPrice : state.gasPrice
var txFee = state.txFee || txData.txFee || ''
+ var txFeeBn = new BN(txFee, 16)
var maxCost = state.maxCost || txData.maxCost || ''
var dataLength = txParams.data ? (txParams.data.length - 2) / 2 : 0
var imageify = props.imageifyIdenticons === undefined ? true : props.imageifyIdenticons
@@ -78,7 +85,6 @@ PTXP.render = function () {
labelColor: '#F7861C',
}),
]),
-
]),
forwardCarrat(),
@@ -121,7 +127,9 @@ PTXP.render = function () {
h('.cell.value', {
}, [
h(HexInput, {
+ name: 'Gas Limit',
value: gas,
+ min: 21000, // The hard lower limit for gas.
suffix: 'UNITS',
style: {
position: 'relative',
@@ -141,8 +149,10 @@ PTXP.render = function () {
h('.cell.value', {
}, [
h(HexInput, {
+ name: 'Gas Price',
value: gasPrice,
suffix: 'WEI',
+ min: MIN_GAS_PRICE_BN.toString(10),
style: {
position: 'relative',
top: '5px',
@@ -158,7 +168,7 @@ PTXP.render = function () {
// Max Transaction Fee (calculated)
h('.cell.row', [
h('.cell.label', 'Max Transaction Fee'),
- h(EthBalance, { value: txFee.toString(16) }),
+ h(EthBalance, { value: txFeeBn.toString(16) }),
]),
h('.cell.row', {
@@ -261,13 +271,21 @@ PTXP.componentDidUpdate = function (prevProps, previousState) {
}
}
+PTXP.isValid = function () {
+ return this.state.valid
+}
+
PTXP.calculateGas = function () {
const txMeta = this.gatherParams()
log.debug(`pending-tx-details calculating gas for ${JSON.stringify(txMeta)}`)
var txParams = txMeta.txParams
var gasCost = new BN(ethUtil.stripHexPrefix(txParams.gas || txMeta.estimatedGas), 16)
- var gasPrice = new BN(ethUtil.stripHexPrefix(txParams.gasPrice || '0x4a817c800'), 16)
+ var gasPrice = new BN(ethUtil.stripHexPrefix(txParams.gasPrice || DEFAULT_GAS_PRICE), 16)
+
+ const valid = !gasPrice.lt(MIN_GAS_PRICE_BN)
+ this.props.validChanged(valid)
+
var txFee = gasCost.mul(gasPrice)
var txValue = new BN(ethUtil.stripHexPrefix(txParams.value || '0x0'), 16)
var maxCost = txValue.add(txFee)
@@ -280,10 +298,12 @@ PTXP.calculateGas = function () {
txMeta.maxCost = maxCostHex
txMeta.txParams.gasPrice = gasPriceHex
- this.setState({
+ const newState = {
txFee: '0x' + txFee.toString('hex'),
maxCost: '0x' + maxCost.toString('hex'),
- })
+ }
+ log.info(`tx form updating local state with ${JSON.stringify(newState)}`)
+ this.setState(newState)
if (this.props.onTxChange) {
this.props.onTxChange(txMeta)