// Copyright 2015-2017 Parity Technologies (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 { observer } from 'mobx-react'; import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; import { Button, Form, Input, IdentityIcon, Loading } from '@parity/ui'; import PasswordStrength from '@parity/ui/Form/PasswordStrength'; import { RefreshIcon } from '@parity/ui/Icons'; import ChangeVault from '../ChangeVault'; import styles from '../createAccount.css'; @observer export default class CreateAccount extends Component { static propTypes = { newError: PropTypes.func.isRequired, createStore: PropTypes.object.isRequired, vaultStore: PropTypes.object } state = { accounts: null, selectedAddress: '' } componentWillMount () { return this.createIdentities(); } render () { const { name, nameError, password, passwordRepeat, passwordRepeatError, passwordHint } = this.props.createStore; return (
} label={ } onChange={ this.onEditAccountName } value={ name } /> } label={ } onChange={ this.onEditPasswordHint } value={ passwordHint } />
} label={ } onChange={ this.onEditPassword } type='password' value={ password } />
} label={ } onChange={ this.onEditPasswordRepeat } type='password' value={ passwordRepeat } />
{ this.renderIdentities() } ); } renderIdentities () { const { accounts, selectedAddress } = this.state; if (!accounts) { return ( ); } return (
{ Object .keys(accounts) .map((address) => { const _onSelect = (event) => this.onChangeIdentity(event, address); return (
); }) }
); } createIdentities = () => { const { createStore } = this.props; this.setState({ accounts: null, selectedAddress: '' }); createStore.setAddress(''); createStore.setPhrase(''); return createStore .createIdentities() .then((accounts) => { const selectedAddress = Object.keys(accounts)[0]; const { phrase } = accounts[selectedAddress]; createStore.setAddress(selectedAddress); createStore.setPhrase(phrase); this.setState({ accounts, selectedAddress }); }) .catch((error) => { this.props.newError(error); }); } onChangeIdentity = (event, selectedAddress) => { const { createStore } = this.props; if (!selectedAddress) { return; } this.setState({ selectedAddress }, () => { const { phrase } = this.state.accounts[selectedAddress]; createStore.setAddress(selectedAddress); createStore.setPhrase(phrase); }); } onEditPasswordHint = (event, passwordHint) => { const { createStore } = this.props; createStore.setPasswordHint(passwordHint); } onEditAccountName = (event, name) => { const { createStore } = this.props; createStore.setName(name); } onEditPassword = (event, password) => { const { createStore } = this.props; createStore.setPassword(password); } onEditPasswordRepeat = (event, password) => { const { createStore } = this.props; createStore.setPasswordRepeat(password); } }