Fix: address checksum in QR code screen
This commit is contained in:
parent
c1142ddda9
commit
d973c28d2d
|
@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue