// Copyright 2015-2018 Parity Technologies (UK) Ltd. // This file is part of Parity. // // SPDX-License-Identifier: BSD-3-Clause import React, { Component } from 'react'; import { Card, Form as FetherForm } from 'fether-ui'; import { inject, observer } from 'mobx-react'; @inject('createAccountStore') @observer class AccountImportOptions extends Component { state = { error: '', isLoading: false, isFileValid: false, json: null, value: '' }; handleNextStep = async () => { const { history, location: { pathname }, createAccountStore: { isImport, isJSON, setJSON, setPhrase } } = this.props; const currentStep = pathname.slice(-1); const { json, value } = this.state; if (isJSON) { this.setState({ isLoading: true }); await setJSON(json); } if (isImport && !isJSON) { this.setState({ isLoading: true }); await setPhrase(value); } history.push(`/accounts/new/${+currentStep + 1}`); }; handleChange = ({ target: { value } }) => { this.setState({ value }); }; handleChangeFile = data => { const { createAccountStore: { setIsJSON } } = this.props; try { const json = JSON.parse(data); const isFileValid = json && json.address.length === 40 && json.version === 3; if (isFileValid) { const prefix = '0x'; json.address = prefix.concat(json.address); setIsJSON(true); this.setState({ isFileValid: true, json: json }); this.handleNextStep(); } else { throw new Error('File is not valid'); } } catch (error) { console.error(error); this.setState({ isFileValid: false, error: 'Invalid file. Please check this is your actual Parity backup json keyfile and try again.' }); } }; render () { const { history, location: { pathname } } = this.props; const { error, value } = this.state; const currentStep = pathname.slice(-1); const jsonCard = (

Recover from JSON Keyfile

); const phraseCard = (

Recover from Seed Phrase

); return (
{jsonCard}
{phraseCard}

{error}

{this.renderButton()}
); } renderButton = () => { const { isFileValid, isLoading, json, value } = this.state; // If we are importing an existing account, the button goes to the next step return ( ); }; } export default AccountImportOptions;