add initial display of status account in resolver UI

This commit is contained in:
Barry Gitarts 2018-06-07 17:55:50 -04:00
parent ef4ff22ed5
commit 8e69076c85
2 changed files with 40 additions and 19 deletions

View File

@ -23,12 +23,15 @@ const addressStyle = {
fontSize: '18px', fontSize: '18px',
fontWeight: 400, fontWeight: 400,
margin: '3% 0 3% 0', margin: '3% 0 3% 0',
cursor: 'copy' cursor: 'copy',
textAlign: 'center',
wordWrap: 'break-word'
} }
const backButton = { const backButton = {
fontSize: '40px', fontSize: '40px',
color: theme.accent color: theme.accent,
cursor: 'pointer'
} }
class DisplayAddress extends PureComponent { class DisplayAddress extends PureComponent {
@ -36,7 +39,7 @@ class DisplayAddress extends PureComponent {
render() { render() {
const { copied } = this.state const { copied } = this.state
const { domainName, address, setStatus } = this.props const { domainName, address, statusAccount, setStatus } = this.props
const markCopied = () => { this.setState({ copied: !copied }) } const markCopied = () => { this.setState({ copied: !copied }) }
const validAddress = address != nullAddress; const validAddress = address != nullAddress;
return ( return (
@ -47,6 +50,9 @@ class DisplayAddress extends PureComponent {
<CopyToClipboard text={address} onCopy={markCopied}> <CopyToClipboard text={address} onCopy={markCopied}>
<div style={addressStyle}>{address}</div> <div style={addressStyle}>{address}</div>
</CopyToClipboard> </CopyToClipboard>
<CopyToClipboard text={statusAccount} onCopy={markCopied}>
<div style={addressStyle}>{statusAccount}</div>
</CopyToClipboard>
{copied && {copied &&
<Info background={theme.positive} style={copiedText}> <Info background={theme.positive} style={copiedText}>
<span>COPIED</span> <span>COPIED</span>
@ -85,19 +91,23 @@ const InnerForm = ({
Get Address Get Address
</Button> </Button>
</form> </form>
: <DisplayAddress domainName={values.domainName} address={status} setStatus={setStatus}/>} : <DisplayAddress
domainName={values.domainName}
address={status.address}
statusAccount={status.statusAccount}
setStatus={setStatus}/>}
</Card> </Card>
) )
const NameLookup = withFormik({ const NameLookup = withFormik({
mapPropsToValues: props => ({ domainName: '' }), mapPropsToValues: props => ({ domainName: '' }),
handleSubmit(values, { setSubmitting, setStatus }) { async handleSubmit(values, { status, setSubmitting, setStatus }) {
const { domainName } = values; const { domainName } = values;
PublicResolver.methods.addr(hash(formatName(domainName))) const { addr, text } = PublicResolver.methods;
.call() const lookupHash = hash(formatName(domainName));
.then(res =>{ const address = await addr(lookupHash).call();
setStatus(res) const statusAccount = await text(lookupHash, 'statusAccount').call();
}); setStatus({ address, statusAccount });
} }
})(InnerForm) })(InnerForm)

View File

@ -55,11 +55,21 @@ const InnerForm = ({
label="Domain Price" label="Domain Price"
disabled disabled
value={values.price ? `${Number(values.price).toLocaleString()} SNT` : ''} /> value={values.price ? `${Number(values.price).toLocaleString()} SNT` : ''} />
<FieldGroup
id="statusAddress"
name="statusAddress"
type="text"
label="Status messenger address domain resolves to"
onChange={handleChange}
onBlur={handleBlur}
value={values.statusAddress}
error={errors.statusAddress}
/>
<FieldGroup <FieldGroup
id="address" id="address"
name="address" name="address"
type="text" type="text"
label="Address domain resolves to" label="Address domain resolves to (optional)"
onChange={handleChange} onChange={handleChange}
onBlur={handleBlur} onBlur={handleBlur}
value={values.address} value={values.address}
@ -80,18 +90,19 @@ const RegisterSubDomain = withFormik({
return errors; return errors;
}, },
handleSubmit(values, { setSubmitting }) { handleSubmit(values, { setSubmitting }) {
const { subDomain, domainName, address } = values; const { subDomain, domainName, address, statusAddress } = values;
const { methods: { register } } = ENSSubdomainRegistry; const { methods: { register } } = ENSSubdomainRegistry;
let subdomainHash = soliditySha3(subDomain); const subdomainHash = soliditySha3(subDomain);
let domainNameHash = hash(domainName); const domainNameHash = hash(domainName);
let resolveToAddr = address || zeroAddress; const resolveToAddr = address || zeroAddress;
let toSend = register( const toSend = register(
subdomainHash, subdomainHash,
domainNameHash, domainNameHash,
resolveToAddr, resolveToAddr,
zeroBytes32, zeroBytes32,
zeroBytes32 zeroBytes32,
statusAddress || zeroBytes32
); );
toSend.estimateGas().then(gasEstimated => { toSend.estimateGas().then(gasEstimated => {
console.log("Register would work. :D Gas estimated: "+gasEstimated) console.log("Register would work. :D Gas estimated: "+gasEstimated)