import React, { Component } from 'react'; import { withRouter } from 'react-router-dom'; import { compose } from 'redux'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import * as actions from '../../../store/actions'; import { getMetaMaskAccounts } from '../../../selectors'; import Button from '../../../components/ui/button'; import { getMostRecentOverviewPage } from '../../../ducks/history/history'; class PrivateKeyImportView extends Component { static contextTypes = { t: PropTypes.func, metricsEvent: PropTypes.func, }; static propTypes = { importNewAccount: PropTypes.func.isRequired, history: PropTypes.object.isRequired, displayWarning: PropTypes.func.isRequired, setSelectedAddress: PropTypes.func.isRequired, firstAddress: PropTypes.string.isRequired, error: PropTypes.node, mostRecentOverviewPage: PropTypes.string.isRequired, }; inputRef = React.createRef(); state = { isEmpty: true }; createNewKeychain() { const privateKey = this.inputRef.current.value; const { importNewAccount, history, displayWarning, mostRecentOverviewPage, setSelectedAddress, firstAddress, } = this.props; const { t } = this.context; importNewAccount('Private Key', [privateKey]) .then(({ selectedAddress }) => { if (selectedAddress) { this.context.metricsEvent({ eventOpts: { category: 'Accounts', action: 'Import Account', name: 'Imported Account with Private Key', }, }); history.push(mostRecentOverviewPage); displayWarning(null); } else { displayWarning(t('importAccountError')); this.context.metricsEvent({ eventOpts: { category: 'Accounts', action: 'Import Account', name: 'Error importing with Private Key', }, }); setSelectedAddress(firstAddress); } }) .catch((err) => err && displayWarning(err.message || err)); } createKeyringOnEnter = (event) => { if (event.key === 'Enter') { event.preventDefault(); this.createNewKeychain(); } }; checkInputEmpty() { const privateKey = this.inputRef.current.value; let isEmpty = true; if (privateKey !== '') { isEmpty = false; } this.setState({ isEmpty }); } render() { const { error, displayWarning } = this.props; return (