2016-05-03 23:32:22 +02:00
|
|
|
const Component = require('react').Component
|
2017-03-02 02:03:55 +01:00
|
|
|
const connect = require('react-redux').connect
|
2016-05-03 23:32:22 +02:00
|
|
|
const h = require('react-hyperscript')
|
|
|
|
const inherits = require('util').inherits
|
2016-06-24 21:48:52 +02:00
|
|
|
const PendingTxDetails = require('./pending-tx-details')
|
2017-03-01 01:36:05 +01:00
|
|
|
const extend = require('xtend')
|
2017-03-02 02:03:55 +01:00
|
|
|
const actions = require('../actions')
|
2016-06-25 02:22:27 +02:00
|
|
|
|
2017-03-02 02:03:55 +01:00
|
|
|
module.exports = connect(mapStateToProps)(PendingTx)
|
|
|
|
|
|
|
|
function mapStateToProps (state) {
|
|
|
|
return {
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
2016-05-03 23:32:22 +02:00
|
|
|
|
|
|
|
inherits(PendingTx, Component)
|
2016-06-21 22:18:32 +02:00
|
|
|
function PendingTx () {
|
2016-05-03 23:32:22 +02:00
|
|
|
Component.call(this)
|
|
|
|
}
|
|
|
|
|
2016-06-21 22:18:32 +02:00
|
|
|
PendingTx.prototype.render = function () {
|
2017-02-17 21:44:09 +01:00
|
|
|
const props = this.props
|
2017-03-01 01:36:05 +01:00
|
|
|
const newProps = extend(props, {ref: 'details'})
|
2017-02-17 21:44:09 +01:00
|
|
|
const txData = props.txData
|
2016-09-15 21:42:35 +02:00
|
|
|
|
2016-05-03 23:32:22 +02:00
|
|
|
return (
|
2016-06-23 04:28:11 +02:00
|
|
|
|
2016-06-24 21:48:52 +02:00
|
|
|
h('div', {
|
2016-05-03 23:32:22 +02:00
|
|
|
key: txData.id,
|
|
|
|
}, [
|
|
|
|
|
2016-06-24 21:48:52 +02:00
|
|
|
// tx info
|
2017-03-01 01:36:05 +01:00
|
|
|
h(PendingTxDetails, newProps),
|
2016-05-03 23:32:22 +02:00
|
|
|
|
2016-07-07 21:39:40 +02:00
|
|
|
h('style', `
|
|
|
|
.conf-buttons button {
|
|
|
|
margin-left: 10px;
|
|
|
|
text-transform: uppercase;
|
|
|
|
}
|
|
|
|
`),
|
|
|
|
|
2016-11-11 06:19:34 +01:00
|
|
|
txData.simulationFails ?
|
2016-11-11 07:13:30 +01:00
|
|
|
h('.error', {
|
2016-11-11 06:19:34 +01:00
|
|
|
style: {
|
|
|
|
marginLeft: 50,
|
|
|
|
fontSize: '0.9em',
|
|
|
|
},
|
|
|
|
}, 'Transaction Error. Exception thrown in contract code.')
|
|
|
|
: null,
|
|
|
|
|
2017-02-17 21:08:54 +01:00
|
|
|
props.insufficientBalance ?
|
2016-09-15 22:04:09 +02:00
|
|
|
h('span.error', {
|
|
|
|
style: {
|
|
|
|
marginLeft: 50,
|
|
|
|
fontSize: '0.9em',
|
|
|
|
},
|
|
|
|
}, 'Insufficient balance for transaction')
|
2016-09-15 21:56:40 +02:00
|
|
|
: null,
|
|
|
|
|
2016-05-03 23:32:22 +02:00
|
|
|
// send + cancel
|
2016-07-07 21:39:40 +02:00
|
|
|
h('.flex-row.flex-space-around.conf-buttons', {
|
2016-07-07 06:32:36 +02:00
|
|
|
style: {
|
2016-07-07 21:39:40 +02:00
|
|
|
display: 'flex',
|
|
|
|
justifyContent: 'flex-end',
|
|
|
|
margin: '14px 25px',
|
2016-07-07 07:51:28 +02:00
|
|
|
},
|
2016-07-07 06:32:36 +02:00
|
|
|
}, [
|
2016-09-15 19:24:05 +02:00
|
|
|
|
2017-02-17 21:08:54 +01:00
|
|
|
props.insufficientBalance ?
|
2017-03-01 23:37:51 +01:00
|
|
|
h('button', {
|
2017-02-17 21:08:54 +01:00
|
|
|
onClick: props.buyEth,
|
2016-09-15 21:42:35 +02:00
|
|
|
}, 'Buy Ether')
|
2016-09-15 21:56:40 +02:00
|
|
|
: null,
|
2016-07-07 21:39:40 +02:00
|
|
|
|
2017-03-01 23:37:51 +01:00
|
|
|
h('button', {
|
|
|
|
onClick: () => {
|
|
|
|
this.refs.details.resetGasFields()
|
|
|
|
},
|
|
|
|
}, 'Reset'),
|
|
|
|
|
|
|
|
h('button.confirm.btn-green', {
|
2017-02-17 21:08:54 +01:00
|
|
|
disabled: props.insufficientBalance,
|
2017-03-02 02:03:55 +01:00
|
|
|
onClick: (txData, event) => {
|
|
|
|
if (this.refs.details.verifyGasParams()) {
|
|
|
|
props.sendTransaction(txData, event)
|
|
|
|
} else {
|
|
|
|
this.props.dispatch(actions.displayWarning('Invalid Gas Parameters'))
|
|
|
|
}
|
|
|
|
},
|
2016-09-15 21:42:35 +02:00
|
|
|
}, 'Accept'),
|
|
|
|
|
|
|
|
h('button.cancel.btn-red', {
|
2017-02-17 21:08:54 +01:00
|
|
|
onClick: props.cancelTransaction,
|
2016-07-07 22:22:38 +02:00
|
|
|
}, 'Reject'),
|
2016-06-25 02:27:42 +02:00
|
|
|
]),
|
2016-05-03 23:32:22 +02:00
|
|
|
])
|
|
|
|
)
|
|
|
|
}
|