const Component = require('react').Component const h = require('react-hyperscript') const inherits = require('util').inherits const InputNumber = require('../input-number.js') const connect = require('../../metamask-connect') module.exports = connect()(GasTooltip) inherits(GasTooltip, Component) function GasTooltip () { Component.call(this) this.state = { gasLimit: 0, gasPrice: 0, } this.updateGasPrice = this.updateGasPrice.bind(this) this.updateGasLimit = this.updateGasLimit.bind(this) this.onClose = this.onClose.bind(this) } GasTooltip.prototype.componentWillMount = function () { const { gasPrice = 0, gasLimit = 0} = this.props this.setState({ gasPrice: parseInt(gasPrice, 16) / 1000000000, gasLimit: parseInt(gasLimit, 16), }) } GasTooltip.prototype.updateGasPrice = function (newPrice) { const { onFeeChange } = this.props const { gasLimit } = this.state this.setState({ gasPrice: newPrice }) onFeeChange({ gasLimit: gasLimit.toString(16), gasPrice: (newPrice * 1000000000).toString(16), }) } GasTooltip.prototype.updateGasLimit = function (newLimit) { const { onFeeChange } = this.props const { gasPrice } = this.state this.setState({ gasLimit: newLimit }) onFeeChange({ gasLimit: newLimit.toString(16), gasPrice: (gasPrice * 1000000000).toString(16), }) } GasTooltip.prototype.onClose = function (e) { e.stopPropagation() this.props.onClose() } GasTooltip.prototype.render = function () { const { gasPrice, gasLimit } = this.state return h('div.gas-tooltip', {}, [ h('div.gas-tooltip-close-area', { onClick: this.onClose, }), h('div.customize-gas-tooltip-container', {}, [ h('div.customize-gas-tooltip', {}, [ h('div.gas-tooltip-header.gas-tooltip-label', {}, ['Customize Gas']), h('div.gas-tooltip-input-label', {}, [ h('span.gas-tooltip-label', {}, ['Gas Price']), h('i.fa.fa-info-circle'), ]), h(InputNumber, { unitLabel: 'GWEI', step: 1, min: 0, placeholder: '0', value: gasPrice, onChange: (newPrice) => this.updateGasPrice(newPrice), }), h('div.gas-tooltip-input-label', { style: { 'marginTop': '81px', }, }, [ h('span.gas-tooltip-label', {}, [this.props.t('gasLimit')]), h('i.fa.fa-info-circle'), ]), h(InputNumber, { unitLabel: 'UNITS', step: 1, min: 0, placeholder: '0', value: gasLimit, onChange: (newLimit) => this.updateGasLimit(newLimit), }), ]), h('div.gas-tooltip-arrow', {}), ]), ]) }