mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Convert account import components to ES6 classes (#7791)
Co-authored-by: Mark Stacey <markjstacey@gmail.com>
This commit is contained in:
parent
f850a17f63
commit
b9757f5563
@ -1,5 +1,4 @@
|
|||||||
import React, { Component } from 'react'
|
import React, { Component } from 'react'
|
||||||
import { inherits } from 'util'
|
|
||||||
import PropTypes from 'prop-types'
|
import PropTypes from 'prop-types'
|
||||||
import Select from 'react-select'
|
import Select from 'react-select'
|
||||||
|
|
||||||
@ -8,30 +7,38 @@ import JsonImportView from './json.js'
|
|||||||
|
|
||||||
import PrivateKeyImportView from './private-key.js'
|
import PrivateKeyImportView from './private-key.js'
|
||||||
|
|
||||||
|
export default class AccountImportSubview extends Component {
|
||||||
AccountImportSubview.contextTypes = {
|
static contextTypes = {
|
||||||
t: PropTypes.func,
|
t: PropTypes.func,
|
||||||
}
|
}
|
||||||
|
|
||||||
export default AccountImportSubview
|
state = {}
|
||||||
|
|
||||||
|
getMenuItemTexts () {
|
||||||
inherits(AccountImportSubview, Component)
|
|
||||||
function AccountImportSubview () {
|
|
||||||
Component.call(this)
|
|
||||||
}
|
|
||||||
|
|
||||||
AccountImportSubview.prototype.getMenuItemTexts = function () {
|
|
||||||
return [
|
return [
|
||||||
this.context.t('privateKey'),
|
this.context.t('privateKey'),
|
||||||
this.context.t('jsonFile'),
|
this.context.t('jsonFile'),
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
AccountImportSubview.prototype.render = function () {
|
renderImportView () {
|
||||||
const state = this.state || {}
|
const { type } = this.state
|
||||||
const menuItems = this.getMenuItemTexts()
|
const menuItems = this.getMenuItemTexts()
|
||||||
const { type } = state
|
const current = type || menuItems[0]
|
||||||
|
|
||||||
|
switch (current) {
|
||||||
|
case this.context.t('privateKey'):
|
||||||
|
return <PrivateKeyImportView />
|
||||||
|
case this.context.t('jsonFile'):
|
||||||
|
return <JsonImportView />
|
||||||
|
default:
|
||||||
|
return <JsonImportView />
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
render () {
|
||||||
|
const menuItems = this.getMenuItemTexts()
|
||||||
|
const { type } = this.state
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="new-account-import-form">
|
<div className="new-account-import-form">
|
||||||
@ -74,20 +81,5 @@ AccountImportSubview.prototype.render = function () {
|
|||||||
{this.renderImportView()}
|
{this.renderImportView()}
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
|
||||||
|
|
||||||
AccountImportSubview.prototype.renderImportView = function () {
|
|
||||||
const state = this.state || {}
|
|
||||||
const { type } = state
|
|
||||||
const menuItems = this.getMenuItemTexts()
|
|
||||||
const current = type || menuItems[0]
|
|
||||||
|
|
||||||
switch (current) {
|
|
||||||
case this.context.t('privateKey'):
|
|
||||||
return <PrivateKeyImportView />
|
|
||||||
case this.context.t('jsonFile'):
|
|
||||||
return <JsonImportView />
|
|
||||||
default:
|
|
||||||
return <JsonImportView />
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import React, { Component } from 'react'
|
import React, { Component } from 'react'
|
||||||
import { inherits } from 'util'
|
|
||||||
import { withRouter } from 'react-router-dom'
|
import { withRouter } from 'react-router-dom'
|
||||||
import { compose } from 'recompose'
|
import { compose } from 'recompose'
|
||||||
import PropTypes from 'prop-types'
|
import PropTypes from 'prop-types'
|
||||||
@ -9,41 +8,62 @@ import { DEFAULT_ROUTE } from '../../../helpers/constants/routes'
|
|||||||
import { getMetaMaskAccounts } from '../../../selectors/selectors'
|
import { getMetaMaskAccounts } from '../../../selectors/selectors'
|
||||||
import Button from '../../../components/ui/button'
|
import Button from '../../../components/ui/button'
|
||||||
|
|
||||||
PrivateKeyImportView.contextTypes = {
|
class PrivateKeyImportView extends Component {
|
||||||
|
static contextTypes = {
|
||||||
t: PropTypes.func,
|
t: PropTypes.func,
|
||||||
metricsEvent: PropTypes.func,
|
metricsEvent: PropTypes.func,
|
||||||
}
|
|
||||||
|
|
||||||
export default compose(
|
|
||||||
withRouter,
|
|
||||||
connect(mapStateToProps, mapDispatchToProps)
|
|
||||||
)(PrivateKeyImportView)
|
|
||||||
|
|
||||||
|
|
||||||
function mapStateToProps (state) {
|
|
||||||
return {
|
|
||||||
error: state.appState.warning,
|
|
||||||
firstAddress: Object.keys(getMetaMaskAccounts(state))[0],
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
function mapDispatchToProps (dispatch) {
|
static propTypes = {
|
||||||
return {
|
importNewAccount: PropTypes.func.isRequired,
|
||||||
importNewAccount: (strategy, [ privateKey ]) => {
|
history: PropTypes.object.isRequired,
|
||||||
return dispatch(actions.importNewAccount(strategy, [ privateKey ]))
|
displayWarning: PropTypes.func.isRequired,
|
||||||
|
setSelectedAddress: PropTypes.func.isRequired,
|
||||||
|
firstAddress: PropTypes.string.isRequired,
|
||||||
|
error: PropTypes.node,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
createNewKeychain () {
|
||||||
|
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',
|
||||||
},
|
},
|
||||||
displayWarning: (message) => dispatch(actions.displayWarning(message || null)),
|
})
|
||||||
setSelectedAddress: (address) => dispatch(actions.setSelectedAddress(address)),
|
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))
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
inherits(PrivateKeyImportView, Component)
|
createKeyringOnEnter = (event) => {
|
||||||
function PrivateKeyImportView () {
|
if (event.key === 'Enter') {
|
||||||
this.createKeyringOnEnter = this.createKeyringOnEnter.bind(this)
|
event.preventDefault()
|
||||||
Component.call(this)
|
this.createNewKeychain()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PrivateKeyImportView.prototype.render = function PrivateKeyImportView () {
|
render () {
|
||||||
const { error, displayWarning } = this.props
|
const { error, displayWarning } = this.props
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -87,43 +107,28 @@ PrivateKeyImportView.prototype.render = function PrivateKeyImportView () {
|
|||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
|
||||||
|
|
||||||
PrivateKeyImportView.prototype.createKeyringOnEnter = function (event) {
|
|
||||||
if (event.key === 'Enter') {
|
|
||||||
event.preventDefault()
|
|
||||||
this.createNewKeychain()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PrivateKeyImportView.prototype.createNewKeychain = function () {
|
export default compose(
|
||||||
const input = document.getElementById('private-key-box')
|
withRouter,
|
||||||
const privateKey = input.value
|
connect(mapStateToProps, mapDispatchToProps)
|
||||||
const { importNewAccount, history, displayWarning, setSelectedAddress, firstAddress } = this.props
|
)(PrivateKeyImportView)
|
||||||
|
|
||||||
importNewAccount('Private Key', [ privateKey ])
|
|
||||||
.then(({ selectedAddress }) => {
|
function mapStateToProps (state) {
|
||||||
if (selectedAddress) {
|
return {
|
||||||
this.context.metricsEvent({
|
error: state.appState.warning,
|
||||||
eventOpts: {
|
firstAddress: Object.keys(getMetaMaskAccounts(state))[0],
|
||||||
category: 'Accounts',
|
}
|
||||||
action: 'Import Account',
|
}
|
||||||
name: 'Imported Account with Private Key',
|
|
||||||
},
|
function mapDispatchToProps (dispatch) {
|
||||||
})
|
return {
|
||||||
history.push(DEFAULT_ROUTE)
|
importNewAccount: (strategy, [ privateKey ]) => {
|
||||||
displayWarning(null)
|
return dispatch(actions.importNewAccount(strategy, [ privateKey ]))
|
||||||
} else {
|
},
|
||||||
displayWarning('Error importing account.')
|
displayWarning: (message) => dispatch(actions.displayWarning(message || null)),
|
||||||
this.context.metricsEvent({
|
setSelectedAddress: (address) => dispatch(actions.setSelectedAddress(address)),
|
||||||
eventOpts: {
|
|
||||||
category: 'Accounts',
|
|
||||||
action: 'Import Account',
|
|
||||||
name: 'Error importing with Private Key',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
setSelectedAddress(firstAddress)
|
|
||||||
}
|
}
|
||||||
})
|
|
||||||
.catch(err => err && displayWarning(err.message || err))
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user