1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00

Merge pull request #9667 from darkwing/9649-qr-contact

Fix 9649 - Ensure QR codes work properly when adding contact
This commit is contained in:
David Walsh 2020-10-22 11:42:31 -05:00 committed by GitHub
commit e46c063fed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 3 deletions

View File

@ -33,6 +33,7 @@ export default class EnsInput extends Component {
onReset: PropTypes.func, onReset: PropTypes.func,
onValidAddressTyped: PropTypes.func, onValidAddressTyped: PropTypes.func,
contact: PropTypes.object, contact: PropTypes.object,
value: PropTypes.string,
} }
state = { state = {
@ -53,20 +54,33 @@ export default class EnsInput extends Component {
} }
} }
// If an address is sent without a nickname, meaning not from ENS or from
// the user's own accounts, a default of a one-space string is used.
componentDidUpdate (prevProps) { componentDidUpdate (prevProps) {
const { const {
input, input,
} = this.state } = this.state
const { const {
network, network,
value,
} = this.props } = this.props
let newValue
// Set the value of our input based on QR code provided by parent
const newProvidedValue = input !== value && prevProps.value !== value
if (newProvidedValue) {
newValue = value
}
if (prevProps.network !== network) { if (prevProps.network !== network) {
const provider = global.ethereumProvider const provider = global.ethereumProvider
this.ens = new ENS({ provider, network }) this.ens = new ENS({ provider, network })
this.onChange({ target: { value: input } }) if (!newProvidedValue) {
newValue = input
}
}
if (newValue !== undefined) {
this.onChange({ target: { value: newValue } })
} }
} }

View File

@ -52,6 +52,7 @@ export default class AddContact extends PureComponent {
validate = (address) => { validate = (address) => {
const valid = isValidAddress(address) const valid = isValidAddress(address)
const validEnsAddress = isValidDomainName(address) const validEnsAddress = isValidDomainName(address)
if (valid || validEnsAddress || address === '') { if (valid || validEnsAddress || address === '') {
this.setState({ error: '', ethAddress: address }) this.setState({ error: '', ethAddress: address })
} else { } else {
@ -73,6 +74,7 @@ export default class AddContact extends PureComponent {
this.setState({ ensAddress: address, error: '', ensError: '' }) this.setState({ ensAddress: address, error: '', ensError: '' })
}} }}
updateEnsResolutionError={(message) => this.setState({ ensError: message })} updateEnsResolutionError={(message) => this.setState({ ensError: message })}
value={this.state.ethAddress || ''}
/> />
) )
} }