Add front-end validation for own adddresses as a token contract address. Add information on token contract addresses.

feature/default_network_editable
Kevin Serrano 7 years ago
parent 941ea65af7
commit 6560a2c3af
No known key found for this signature in database
GPG Key ID: BF999DEFC7371BA1
  1. 30
      ui/app/add-token.js

@ -3,6 +3,8 @@ const Component = require('react').Component
const h = require('react-hyperscript') const h = require('react-hyperscript')
const connect = require('react-redux').connect const connect = require('react-redux').connect
const actions = require('./actions') const actions = require('./actions')
const Tooltip = require('./components/tooltip.js')
const ethUtil = require('ethereumjs-util') const ethUtil = require('ethereumjs-util')
const abi = require('human-standard-token-abi') const abi = require('human-standard-token-abi')
@ -15,6 +17,7 @@ module.exports = connect(mapStateToProps)(AddTokenScreen)
function mapStateToProps (state) { function mapStateToProps (state) {
return { return {
identities: state.metamask.identities,
} }
} }
@ -64,15 +67,24 @@ AddTokenScreen.prototype.render = function () {
}, [ }, [
h('div', [ h('div', [
h('span', { h(Tooltip, {
style: { fontWeight: 'bold', paddingRight: '10px'}, position: 'top',
}, 'Token Address'), title: 'The contract of the actual token contract. Click for more info.',
}, [
h('a', {
style: { fontWeight: 'bold', paddingRight: '10px'},
href: 'https://consensyssupport.happyfox.com/staff/kb/article/24-what-is-a-token-contract-address',
}, [
h('span', 'Token Contract Address '),
h('i.fa.fa-question-circle'),
]),
]),
]), ]),
h('section.flex-row.flex-center', [ h('section.flex-row.flex-center', [
h('input#token-address', { h('input#token-address', {
name: 'address', name: 'address',
placeholder: 'Token Address', placeholder: 'Token Contract Address',
onChange: this.tokenAddressDidChange.bind(this), onChange: this.tokenAddressDidChange.bind(this),
style: { style: {
width: 'inherit', width: 'inherit',
@ -171,7 +183,9 @@ AddTokenScreen.prototype.tokenAddressDidChange = function (event) {
AddTokenScreen.prototype.validateInputs = function () { AddTokenScreen.prototype.validateInputs = function () {
let msg = '' let msg = ''
const state = this.state const state = this.state
const identitiesList = Object.keys(this.props.identities)
const { address, symbol, decimals } = state const { address, symbol, decimals } = state
const standardAddress = ethUtil.addHexPrefix(address).toLowerCase()
const validAddress = ethUtil.isValidAddress(address) const validAddress = ethUtil.isValidAddress(address)
if (!validAddress) { if (!validAddress) {
@ -189,7 +203,12 @@ AddTokenScreen.prototype.validateInputs = function () {
msg += 'Symbol must be between 0 and 10 characters.' msg += 'Symbol must be between 0 and 10 characters.'
} }
const isValid = validAddress && validDecimals const ownAddress = identitiesList.includes(standardAddress)
if (ownAddress) {
msg = 'Personal address detected. Input the token contact address.'
}
const isValid = validAddress && validDecimals && !ownAddress
if (!isValid) { if (!isValid) {
this.setState({ this.setState({
@ -216,4 +235,3 @@ AddTokenScreen.prototype.attemptToAutoFillTokenParams = async function (address)
this.setState({ symbol: symbol[0], decimals: decimals[0].toString() }) this.setState({ symbol: symbol[0], decimals: decimals[0].toString() })
} }
} }

Loading…
Cancel
Save