// Copyright 2015, 2016 Ethcore (UK) Ltd. // This file is part of Parity. // Parity is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // Parity is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with Parity. If not, see . import React, { Component, PropTypes } from 'react'; import { Card, CardHeader, CardText } from 'material-ui/Card'; import TextField from 'material-ui/TextField'; import DropDownMenu from 'material-ui/DropDownMenu'; import MenuItem from 'material-ui/MenuItem'; import RaisedButton from 'material-ui/RaisedButton'; import CheckIcon from 'material-ui/svg-icons/navigation/check'; import { fromWei } from '../parity.js'; import styles from './names.css'; const useSignerText = (

Use the Signer to authenticate the following changes.

); const renderNames = (names) => { const out = []; for (let name of names) { out.push(({ name }), ', '); } out.pop(); return out; }; const renderQueue = (queue) => { if (queue.length === 0) { return null; } const grouped = queue.reduce((grouped, change) => { const last = grouped[grouped.length - 1]; if (last && last.action === change.action) { last.names.push(change.name); } else { grouped.push({ action: change.action, names: [change.name] }); } return grouped; }, []); return ( ); }; export default class Names extends Component { static propTypes = { actions: PropTypes.object.isRequired, fee: PropTypes.object.isRequired, hasAccount: PropTypes.bool.isRequired, pending: PropTypes.bool.isRequired, queue: PropTypes.array.isRequired } state = { action: 'reserve', name: '' }; render () { const { action, name } = this.state; const { fee, hasAccount, pending, queue } = this.props; return ( { !hasAccount ? (

Please select an account first.

) : (action === 'reserve' ? (

The fee to reserve a name is { fromWei(fee).toFixed(3) }ETH.

) : (

To drop a name, you have to be the owner.

) ) } } onClick={ this.onSubmitClick } /> { queue.length > 0 ? (
{ useSignerText }{ renderQueue(queue) }
) : null }
); } onNameChange = (e) => { this.setState({ name: e.target.value }); }; onActionChange = (e, i, action) => { this.setState({ action }); }; onSubmitClick = () => { const { action, name } = this.state; if (action === 'reserve') { this.props.actions.reserve(name); } else if (action === 'drop') { this.props.actions.drop(name); } }; }