mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Keep privateKey out of state and clear it after closing export private key modal.
This commit is contained in:
parent
01816e1b22
commit
10345a12c2
@ -106,6 +106,7 @@ var actions = {
|
||||
exportAccount: exportAccount,
|
||||
SHOW_PRIVATE_KEY: 'SHOW_PRIVATE_KEY',
|
||||
showPrivateKey: showPrivateKey,
|
||||
exportAccountComplete,
|
||||
SAVE_ACCOUNT_LABEL: 'SAVE_ACCOUNT_LABEL',
|
||||
saveAccountLabel: saveAccountLabel,
|
||||
// tx conf screen
|
||||
@ -984,27 +985,39 @@ function exportAccount (password, address) {
|
||||
dispatch(self.showLoadingIndication())
|
||||
|
||||
log.debug(`background.submitPassword`)
|
||||
background.submitPassword(password, function (err) {
|
||||
if (err) {
|
||||
log.error('Error in submiting password.')
|
||||
dispatch(self.hideLoadingIndication())
|
||||
return dispatch(self.displayWarning('Incorrect Password.'))
|
||||
}
|
||||
log.debug(`background.exportAccount`)
|
||||
background.exportAccount(address, function (err, result) {
|
||||
dispatch(self.hideLoadingIndication())
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
background.submitPassword(password, function (err) {
|
||||
if (err) {
|
||||
log.error(err)
|
||||
return dispatch(self.displayWarning('Had a problem exporting the account.'))
|
||||
log.error('Error in submiting password.')
|
||||
dispatch(self.hideLoadingIndication())
|
||||
dispatch(self.displayWarning('Incorrect Password.'))
|
||||
return reject(err)
|
||||
}
|
||||
log.debug(`background.exportAccount`)
|
||||
return background.exportAccount(address, function (err, result) {
|
||||
dispatch(self.hideLoadingIndication())
|
||||
|
||||
dispatch(self.showPrivateKey(result))
|
||||
if (err) {
|
||||
log.error(err)
|
||||
dispatch(self.displayWarning('Had a problem exporting the account.'))
|
||||
return reject(err)
|
||||
}
|
||||
|
||||
dispatch(self.exportAccountComplete())
|
||||
|
||||
return resolve(result)
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
function exportAccountComplete() {
|
||||
return {
|
||||
type: actions.EXPORT_ACCOUNT,
|
||||
}
|
||||
}
|
||||
|
||||
function showPrivateKey (key) {
|
||||
return {
|
||||
type: actions.SHOW_PRIVATE_KEY,
|
||||
|
@ -31,12 +31,20 @@ function ExportPrivateKeyModal () {
|
||||
Component.call(this)
|
||||
|
||||
this.state = {
|
||||
password: ''
|
||||
password: '',
|
||||
privateKey: null,
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = connect(mapStateToProps, mapDispatchToProps)(ExportPrivateKeyModal)
|
||||
|
||||
ExportPrivateKeyModal.prototype.exportAccountAndGetPrivateKey = function (password, address) {
|
||||
const { exportAccount } = this.props
|
||||
|
||||
exportAccount(password, address)
|
||||
.then(privateKey => this.setState({ privateKey }))
|
||||
}
|
||||
|
||||
ExportPrivateKeyModal.prototype.renderPasswordLabel = function (privateKey) {
|
||||
return h('span.private-key-password-label', privateKey
|
||||
? 'This is your private key (click to copy)'
|
||||
@ -68,15 +76,13 @@ ExportPrivateKeyModal.prototype.renderButton = function (className, onClick, lab
|
||||
}, label)
|
||||
}
|
||||
|
||||
ExportPrivateKeyModal.prototype.renderButtons = function (privateKey, password, address) {
|
||||
const { hideModal, exportAccount } = this.props
|
||||
|
||||
ExportPrivateKeyModal.prototype.renderButtons = function (privateKey, password, address, hideModal) {
|
||||
return h('div.export-private-key-buttons', {}, [
|
||||
!privateKey && this.renderButton('btn-clear btn-cancel', () => hideModal(), 'Cancel'),
|
||||
|
||||
(privateKey
|
||||
? this.renderButton('btn-clear', () => hideModal(), 'Done')
|
||||
: this.renderButton('btn-clear', () => exportAccount(this.state.password, address), 'Download')
|
||||
: this.renderButton('btn-clear', () => this.exportAccountAndGetPrivateKey(this.state.password, address), 'Download')
|
||||
),
|
||||
|
||||
])
|
||||
@ -86,7 +92,6 @@ ExportPrivateKeyModal.prototype.render = function () {
|
||||
const {
|
||||
selectedIdentity,
|
||||
network,
|
||||
privateKey,
|
||||
warning,
|
||||
showAccountDetailModal,
|
||||
hideModal,
|
||||
@ -94,6 +99,8 @@ ExportPrivateKeyModal.prototype.render = function () {
|
||||
} = this.props
|
||||
const { name, address } = selectedIdentity
|
||||
|
||||
const { privateKey } = this.state
|
||||
|
||||
return h(AccountModalContainer, {
|
||||
showBackButton: previousModalState === 'ACCOUNT_DETAILS',
|
||||
backButtonAction: () => showAccountDetailModal(),
|
||||
@ -124,7 +131,7 @@ ExportPrivateKeyModal.prototype.render = function () {
|
||||
account.`
|
||||
),
|
||||
|
||||
this.renderButtons(privateKey, this.state.password, address),
|
||||
this.renderButtons(privateKey, this.state.password, address, hideModal),
|
||||
|
||||
])
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user