import { resolveEnsName } from 'actions/ens'; import { Identicon } from 'components/ui'; import { isValidENSAddress, isValidENSorEtherAddress } from 'libs/validators'; import React from 'react'; import { connect } from 'react-redux'; import { AppState } from 'reducers'; import { getEnsAddress } from 'selectors/ens'; import translate from 'translations'; interface PublicProps { placeholder: string; value: string; onChange: ((value: string) => void) | null; } interface Props extends PublicProps { ensAddress: string | null; resolveEnsName: typeof resolveEnsName; } export class AddressField extends React.Component { public render() { const { placeholder, value, ensAddress } = this.props; const isReadonly = !this.props.onChange; return (
{!!ensAddress &&

{ensAddress}

}
); } public onChange = (e: React.SyntheticEvent) => { const newValue = (e.target as HTMLInputElement).value; const { onChange } = this.props; if (!onChange) { return; } // FIXME debounce? if (isValidENSAddress(newValue)) { this.props.resolveEnsName(newValue); } onChange(newValue); }; } function mapStateToProps(state: AppState, props: PublicProps) { return { ensAddress: getEnsAddress(state, props.value) }; } export default connect(mapStateToProps, { resolveEnsName })(AddressField);