Fix: address checksum in QR code screen

This commit is contained in:
Victor Baranov 2019-06-16 21:48:44 +03:00
parent c1142ddda9
commit d973c28d2d
2 changed files with 7 additions and 9 deletions

View File

@ -5,6 +5,7 @@ const {qrcode: qrCode} = require('qrcode-npm')
const {connect} = require('react-redux')
const {isHexPrefixed} = require('ethereumjs-util')
const CopyButton = require('./components/copy/copy-button')
const { toChecksumAddress } = require('./util')
class AccountQrScreen extends PureComponent {
static defaultProps = {
@ -14,11 +15,13 @@ class AccountQrScreen extends PureComponent {
static propTypes = {
Qr: PropTypes.object.isRequired,
warning: PropTypes.node,
network: PropTypes.string,
}
render () {
const {Qr, warning} = this.props
const {Qr, warning, network} = this.props
const address = `${isHexPrefixed(Qr.data) ? 'ethereum:' : ''}${Qr.data}`
const addressChecksum = toChecksumAddress(network, Qr.data)
const qrImage = qrCode(4, 'M')
qrImage.addData(address)
@ -51,9 +54,9 @@ class AccountQrScreen extends PureComponent {
style: {
width: '247px',
},
}, Qr.data),
}, addressChecksum),
h(CopyButton, {
value: Qr.data,
value: addressChecksum,
}),
]),
])
@ -64,6 +67,7 @@ function mapStateToProps (state) {
return {
Qr: state.appState.Qr,
warning: state.appState.warning,
network: state.metamask.network,
}
}

View File

@ -81,11 +81,9 @@ function accountSummary (acc, firstSegLength = 6, lastSegLength = 4) {
function isValidAddress (address, network) {
var prefixed = ethUtil.addHexPrefix(address)
if (ifRSK(network)) {
// console.log('addHexPrefixRSK:', prefixed)
if (address === '0x0000000000000000000000000000000000000000') return false
return (ethUtil.isValidAddress(prefixed))
} else {
// console.log('addHexPrefix:', prefixed)
if (address === '0x0000000000000000000000000000000000000000') return false
return (isAllOneCase(prefixed) && ethUtil.isValidAddress(prefixed)) || ethUtil.isValidChecksumAddress(prefixed)
}
@ -414,9 +412,5 @@ function toChecksumAddress (network, address, chainId = null) {
}
function isValidChecksumAddress (network, address) {
// console.log('isValidAddress(address):', isValidAddress(address, network))
// console.log('toChecksumAddress(network, address) === address', toChecksumAddress(network, address) === address)
// console.log('ethUtil.isValidAddress(address)', ethUtil.isValidAddress(address))
// console.log('isAllOneCase', isAllOneCase(address))
return isValidAddress(address, network) && toChecksumAddress(network, address) === address
}