import React, {Component, PropTypes} from 'react' import {connect} from 'react-redux'; import classnames from 'classnames' import Identicon from '../../../../ui/app/components/identicon' import {confirmSeedWords} from '../../../../ui/app/actions' import Breadcrumbs from './breadcrumbs' import LoadingScreen from './loading-screen' const LockIcon = props => ( ); class BackupPhraseScreen extends Component { static propTypes = { isLoading: PropTypes.bool.isRequired, address: PropTypes.string.isRequired, seedWords: PropTypes.string.isRequired, next: PropTypes.func.isRequired, }; static defaultProps = { seedWords: '' }; static PAGE = { SECRET: 'secret', CONFIRM: 'confirm' }; state = { isShowingSecret: false, page: BackupPhraseScreen.PAGE.SECRET, selectedSeeds: [] } renderSecretWordsContainer() { const { isShowingSecret } = this.state; return (
{this.props.seedWords}
{!isShowingSecret && (
)}
); } renderSecretScreen() { const { isShowingSecret } = this.state return (
Secret Backup Phrase
Your secret backup phrase makes it easy to back up and restore your account.
WARNING: Never disclose your backup phrase. Anyone with this phrase can take your Ether forever.
{this.renderSecretWordsContainer()}
Tips:
Store this phrase in a password manager like 1password.
Write this phrase on a piece of paper and store in a secure location. If you want even more security, write it down on multiple pieces of paper and store each in 2 - 3 different locations.
Memorize this phrase.
) } renderConfirmationScreen() { const { seedWords, confirmSeedWords, next } = this.props; const { selectedSeeds } = this.state; const isValid = seedWords === selectedSeeds.join(' ') return (
Confirm your Secret Backup Phrase
Please select each phrase in order to make sure it is correct.
{selectedSeeds.map((word, i) => ( ))}
{seedWords.split(' ').map((word, i) => { const isSelected = selectedSeeds.includes(word) return ( ) })}
) } renderBack() { return this.state.page === BackupPhraseScreen.PAGE.CONFIRM ? ( { e.preventDefault() this.setState({ page: BackupPhraseScreen.PAGE.SECRET }) }} href="#" > {`< Back`} ) : null } renderContent() { switch(this.state.page) { case BackupPhraseScreen.PAGE.CONFIRM: return this.renderConfirmationScreen(); case BackupPhraseScreen.PAGE.SECRET: default: return this.renderSecretScreen(); } } render() { return this.props.isLoading ? : (
{this.renderBack()} {this.renderContent()}
) } } export default connect( ({ metamask: { selectedAddress, seedWords }, appState: { isLoading } }) => ({ seedWords, isLoading, address: selectedAddress }), dispatch => ({ confirmSeedWords: () => dispatch(confirmSeedWords()) }) )(BackupPhraseScreen)