validators merge
This commit is contained in:
parent
240007fe43
commit
0ad93101e7
|
@ -1,6 +1,8 @@
|
||||||
|
// @flow
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { toDataUrl } from 'ethereum-blockies';
|
import { toDataUrl } from 'ethereum-blockies';
|
||||||
import { isValidAddress } from 'eth/validators';
|
import { isValidETHAddress } from 'libs/validators';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
address: string
|
address: string
|
||||||
|
@ -8,7 +10,7 @@ type Props = {
|
||||||
|
|
||||||
export default function Identicon(props: Props) {
|
export default function Identicon(props: Props) {
|
||||||
// FIXME breaks on failed checksums
|
// FIXME breaks on failed checksums
|
||||||
const style = !isValidAddress(props.address)
|
const style = !isValidETHAddress(props.address)
|
||||||
? {}
|
? {}
|
||||||
: { backgroundImage: `url(${toDataUrl(props.address.toLowerCase())})` };
|
: { backgroundImage: `url(${toDataUrl(props.address.toLowerCase())})` };
|
||||||
return <div className="addressIdenticon" style={style} title="Address Indenticon" />;
|
return <div className="addressIdenticon" style={style} title="Address Indenticon" />;
|
||||||
|
|
|
@ -4,7 +4,7 @@ import { Identicon } from 'components/ui';
|
||||||
import { getEnsAddress } from 'selectors/ens';
|
import { getEnsAddress } from 'selectors/ens';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import type { State } from 'reducers';
|
import type { State } from 'reducers';
|
||||||
import { isValidENSorEtherAddress, isValidENSAddress } from 'eth/validators';
|
import { isValidENSorEtherAddress, isValidENSAddress } from 'libs/validators';
|
||||||
import { resolveEnsName } from 'actions/ens';
|
import { resolveEnsName } from 'actions/ens';
|
||||||
|
|
||||||
type PublicProps = {
|
type PublicProps = {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// @flow
|
// @flow
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import translate from 'translations';
|
import translate from 'translations';
|
||||||
import { isValidHex } from 'eth/validators';
|
import { isValidHex } from 'libs/validators';
|
||||||
|
|
||||||
export default class DataField extends React.Component {
|
export default class DataField extends React.Component {
|
||||||
props: {
|
props: {
|
||||||
|
|
|
@ -1,40 +1,32 @@
|
||||||
|
// @flow
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { DONATION_ADDRESSES_MAP } from 'config/data';
|
import { DONATION_ADDRESSES_MAP } from 'config/data';
|
||||||
import Validator from 'libs/validator';
|
import {isValidBTCAddress, isValidETHAddress} from 'libs/validators';
|
||||||
import translate from 'translations';
|
import translate from 'translations';
|
||||||
|
|
||||||
export default class ReceivingAddress extends Component {
|
export default class ReceivingAddress extends Component {
|
||||||
constructor(props) {
|
|
||||||
super(props);
|
|
||||||
this.validator = new Validator();
|
|
||||||
this.state = {
|
|
||||||
validAddress: false
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
destinationKind: PropTypes.string.isRequired,
|
destinationKind: PropTypes.string.isRequired,
|
||||||
receivingAddressSwap: PropTypes.func.isRequired,
|
receivingAddressSwap: PropTypes.func.isRequired,
|
||||||
receivingAddress: PropTypes.string
|
receivingAddress: PropTypes.string
|
||||||
};
|
};
|
||||||
|
|
||||||
onChangeReceivingAddress = event => {
|
onChangeReceivingAddress = (event: SyntheticInputEvent) => {
|
||||||
const value = event.target.value;
|
const value = event.target.value;
|
||||||
this.props.receivingAddressSwap(value);
|
this.props.receivingAddressSwap(value);
|
||||||
let validAddress;
|
|
||||||
// TODO - find better pattern here once currencies move beyond BTC, ETH, REP
|
|
||||||
if (this.props.destinationKind === 'BTC') {
|
|
||||||
validAddress = this.validator.isValidBTCAddress(value);
|
|
||||||
} else {
|
|
||||||
validAddress = this.validator.isValidETHAddress(value);
|
|
||||||
}
|
|
||||||
this.setState({ validAddress });
|
|
||||||
};
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { destinationKind, receivingAddress } = this.props;
|
const { destinationKind, receivingAddress } = this.props;
|
||||||
const { validAddress } = this.state;
|
let validAddress;
|
||||||
|
// TODO - find better pattern here once currencies move beyond BTC, ETH, REP
|
||||||
|
if (this.props.destinationKind === 'BTC') {
|
||||||
|
validAddress = isValidBTCAddress(receivingAddress);
|
||||||
|
} else {
|
||||||
|
validAddress = isValidETHAddress(receivingAddress);
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<article className="swap-start">
|
<article className="swap-start">
|
||||||
<section className="swap-address block">
|
<section className="swap-address block">
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
import WalletAddressValidator from 'wallet-address-validator';
|
|
||||||
import ethUtil from 'ethereumjs-util';
|
|
||||||
|
|
||||||
export default class Validator {
|
|
||||||
isValidETHAddress = function(address) {
|
|
||||||
if (address && address === '0x0000000000000000000000000000000000000000')
|
|
||||||
return false;
|
|
||||||
if (address) {
|
|
||||||
return ethUtil.isValidAddress(address);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
isValidBTCAddress = function(address) {
|
|
||||||
return WalletAddressValidator.validate(address, 'BTC');
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,7 +1,20 @@
|
||||||
// @flow
|
// @flow
|
||||||
|
import WalletAddressValidator from 'wallet-address-validator';
|
||||||
import { normalise } from './ens';
|
import { normalise } from './ens';
|
||||||
import { toChecksumAddress } from 'ethereumjs-util';
|
import { toChecksumAddress } from 'ethereumjs-util';
|
||||||
|
|
||||||
|
export function isValidETHAddress(address: string): boolean {
|
||||||
|
if (!address) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (address == '0x0000000000000000000000000000000000000000') return false;
|
||||||
|
return validateEtherAddress(address);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function isValidBTCAddress(address: string): boolean {
|
||||||
|
return WalletAddressValidator.validate(address, 'BTC');
|
||||||
|
}
|
||||||
|
|
||||||
export function isValidHex(str: string): boolean {
|
export function isValidHex(str: string): boolean {
|
||||||
if (typeof str !== 'string') {
|
if (typeof str !== 'string') {
|
||||||
return false;
|
return false;
|
||||||
|
@ -13,7 +26,7 @@ export function isValidHex(str: string): boolean {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isValidENSorEtherAddress(address: string): boolean {
|
export function isValidENSorEtherAddress(address: string): boolean {
|
||||||
return isValidAddress(address) || isValidENSAddress(address);
|
return isValidETHAddress(address) || isValidENSAddress(address);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isValidENSName(str: string) {
|
export function isValidENSName(str: string) {
|
||||||
|
@ -44,6 +57,7 @@ function isChecksumAddress(address: string): boolean {
|
||||||
return address == toChecksumAddress(address);
|
return address == toChecksumAddress(address);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME we probably want to do checksum checks sideways
|
||||||
function validateEtherAddress(address: string): boolean {
|
function validateEtherAddress(address: string): boolean {
|
||||||
if (address.substring(0, 2) != '0x') return false;
|
if (address.substring(0, 2) != '0x') return false;
|
||||||
else if (!/^(0x)?[0-9a-f]{40}$/i.test(address)) return false;
|
else if (!/^(0x)?[0-9a-f]{40}$/i.test(address)) return false;
|
||||||
|
@ -51,12 +65,3 @@ function validateEtherAddress(address: string): boolean {
|
||||||
return true;
|
return true;
|
||||||
else return isChecksumAddress(address);
|
else return isChecksumAddress(address);
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME already in swap PR somewhere
|
|
||||||
export function isValidAddress(address: string): boolean {
|
|
||||||
if (!address) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (address == '0x0000000000000000000000000000000000000000') return false;
|
|
||||||
return validateEtherAddress(address);
|
|
||||||
}
|
|
Loading…
Reference in New Issue