import React, { Component } from 'react' const inherits = require('util').inherits const { withRouter } = require('react-router-dom') const { compose } = require('recompose') const PropTypes = require('prop-types') const connect = require('react-redux').connect const actions = require('../../../store/actions') const { DEFAULT_ROUTE } = require('../../../helpers/constants/routes') const { getMetaMaskAccounts } = require('../../../selectors/selectors') import Button from '../../../components/ui/button' PrivateKeyImportView.contextTypes = { t: PropTypes.func, metricsEvent: PropTypes.func, } module.exports = compose( withRouter, connect(mapStateToProps, mapDispatchToProps) )(PrivateKeyImportView) function mapStateToProps (state) { return { error: state.appState.warning, firstAddress: Object.keys(getMetaMaskAccounts(state))[0], } } function mapDispatchToProps (dispatch) { return { importNewAccount: (strategy, [ privateKey ]) => { return dispatch(actions.importNewAccount(strategy, [ privateKey ])) }, displayWarning: (message) => dispatch(actions.displayWarning(message || null)), setSelectedAddress: (address) => dispatch(actions.setSelectedAddress(address)), } } inherits(PrivateKeyImportView, Component) function PrivateKeyImportView () { this.createKeyringOnEnter = this.createKeyringOnEnter.bind(this) Component.call(this) } PrivateKeyImportView.prototype.render = function PrivateKeyImportView () { const { error, displayWarning } = this.props return (
{this.context.t('pastePrivateKey')}
this.createKeyringOnEnter(e)} />
{ error ? {error} : null }
) } PrivateKeyImportView.prototype.createKeyringOnEnter = function (event) { if (event.key === 'Enter') { event.preventDefault() this.createNewKeychain() } } PrivateKeyImportView.prototype.createNewKeychain = function () { const input = document.getElementById('private-key-box') const privateKey = input.value const { importNewAccount, history, displayWarning, setSelectedAddress, firstAddress } = this.props 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(DEFAULT_ROUTE) displayWarning(null) } else { displayWarning('Error importing account.') this.context.metricsEvent({ eventOpts: { category: 'Accounts', action: 'Import Account', name: 'Error importing with Private Key', }, }) setSelectedAddress(firstAddress) } }) .catch(err => err && displayWarning(err.message || err)) }