Handles errors with to field and renders warnings from backend in send token.

feature/default_network_editable
Dan 7 years ago committed by Chi Kei Chan
parent 04da22db08
commit 97810acb53
  1. 28
      ui/app/components/send-token/index.js

@ -6,6 +6,7 @@ const classnames = require('classnames')
const inherits = require('util').inherits
const actions = require('../../actions')
const selectors = require('../../selectors')
const { isValidAddress } = require('../../util')
// const BalanceComponent = require('./balance-component')
const Identicon = require('../identicon')
@ -14,12 +15,12 @@ const CurrencyToggle = require('../send/currency-toggle')
const GasTooltip = require('../send/gas-tooltip')
const GasFeeDisplay = require('../send/gas-fee-display')
module.exports = connect(mapStateToProps, mapDispatchToProps)(SendTokenScreen)
function mapStateToProps (state) {
// const sidebarOpen = state.appState.sidebarOpen
const { warning } = state.appState
const identities = state.metamask.identities
const addressBook = state.metamask.addressBook
const conversionRate = state.metamask.conversionRate
@ -34,6 +35,7 @@ function mapStateToProps (state) {
const { rate: tokenExchangeRate = 0 } = tokenExchangeRates[pair] || {}
// const checksumAddress = selectedAddress && ethUtil.toChecksumAddress(selectedAddress)
// const identity = identities[selectedAddress]
return {
// sidebarOpen,
selectedAddress,
@ -45,6 +47,7 @@ function mapStateToProps (state) {
tokenExchangeRate,
currentBlockGasLimit,
selectedToken,
warning,
// selectedToken: selectors.getSelectedToken(state),
// identity,
// network,
@ -106,13 +109,6 @@ SendTokenScreen.prototype.validate = function () {
const gasLimit = parseInt(hexGasLimit, 16) / 1000000000
const amount = Number(stringAmount)
if (to && amount && gasPrice && gasLimit) {
return {
isValid: true,
errors: {},
}
}
const errors = {
to: !to ? 'Required' : null,
amount: !amount ? 'Required' : null,
@ -120,9 +116,14 @@ SendTokenScreen.prototype.validate = function () {
gasLimit: !gasLimit ? 'Gas Limit Required' : null,
}
if(to && !isValidAddress(to)) {
errors.to = 'Invalid address'
}
const isValid = Object.entries(errors).every(([key, value]) => value === null)
return {
isValid: false,
errors,
isValid,
errors: isValid ? {} : errors,
}
}
@ -145,7 +146,6 @@ SendTokenScreen.prototype.submit = function () {
} = this.props
const { nickname = ' ' } = identities[to] || {}
const { isValid, errors } = this.validate()
if (!isValid) {
@ -340,6 +340,7 @@ SendTokenScreen.prototype.render = function () {
const {
selectedTokenAddress,
selectedToken,
warning,
} = this.props
return h('div.send-token', [
@ -359,6 +360,11 @@ SendTokenScreen.prototype.render = function () {
this.renderAmountInput(),
this.renderGasInput(),
this.renderMemoInput(),
warning && h('div.send-screen-input-wrapper--error', {},
h('div.send-screen-input-wrapper__error-message', [
warning,
])
),
]),
this.renderButtons(),
])

Loading…
Cancel
Save