const Component = require('react').Component 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 inherits(PendingTx, Component) function PendingTx () { Component.call(this) } PendingTx.prototype.render = function () { var state = this.props var txData = state.txData return ( h('div', { key: txData.id, }, [ // tx info h(PendingTxDetails, state), h('style', ` .conf-buttons button { margin-left: 10px; text-transform: uppercase; } `), // send + cancel h('.flex-row.flex-space-around.conf-buttons', { style: { display: 'flex', justifyContent: 'flex-end', margin: '14px 25px', }, }, [ this.buttonDeligator(), h('button.cancel', { onClick: state.cancelTransaction, style: { background: 'rgb(254,35,17)' }, }, 'Reject'), ]), ]) ) } 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') } }