mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Basic private key download file functionality.
This commit is contained in:
parent
10b03cd6a2
commit
3a7d4a5d4e
@ -20,20 +20,21 @@ function mapStateToProps (state) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ExportAccountView.prototype.render = function () {
|
ExportAccountView.prototype.render = function () {
|
||||||
var state = this.props
|
const state = this.props
|
||||||
var accountDetail = state.accountDetail
|
const accountDetail = state.accountDetail
|
||||||
|
const nickname = state.identities[state.address].name
|
||||||
|
|
||||||
if (!accountDetail) return h('div')
|
if (!accountDetail) return h('div')
|
||||||
var accountExport = accountDetail.accountExport
|
const accountExport = accountDetail.accountExport
|
||||||
|
|
||||||
var notExporting = accountExport === 'none'
|
const notExporting = accountExport === 'none'
|
||||||
var exportRequested = accountExport === 'requested'
|
const exportRequested = accountExport === 'requested'
|
||||||
var accountExported = accountExport === 'completed'
|
const accountExported = accountExport === 'completed'
|
||||||
|
|
||||||
if (notExporting) return h('div')
|
if (notExporting) return h('div')
|
||||||
|
|
||||||
if (exportRequested) {
|
if (exportRequested) {
|
||||||
var warning = `Export private keys at your own risk.`
|
const warning = `Export private keys at your own risk.`
|
||||||
return (
|
return (
|
||||||
h('div', {
|
h('div', {
|
||||||
style: {
|
style: {
|
||||||
@ -89,6 +90,8 @@ ExportAccountView.prototype.render = function () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (accountExported) {
|
if (accountExported) {
|
||||||
|
const plainKey = ethUtil.stripHexPrefix(accountDetail.privateKey)
|
||||||
|
|
||||||
return h('div.privateKey', {
|
return h('div.privateKey', {
|
||||||
style: {
|
style: {
|
||||||
margin: '0 20px',
|
margin: '0 20px',
|
||||||
@ -105,10 +108,13 @@ ExportAccountView.prototype.render = function () {
|
|||||||
onClick: function (event) {
|
onClick: function (event) {
|
||||||
copyToClipboard(ethUtil.stripHexPrefix(accountDetail.privateKey))
|
copyToClipboard(ethUtil.stripHexPrefix(accountDetail.privateKey))
|
||||||
},
|
},
|
||||||
}, ethUtil.stripHexPrefix(accountDetail.privateKey)),
|
}, plainKey),
|
||||||
h('button', {
|
h('button', {
|
||||||
onClick: () => this.props.dispatch(actions.backToAccountDetail(this.props.address)),
|
onClick: () => this.props.dispatch(actions.backToAccountDetail(this.props.address)),
|
||||||
}, 'Done'),
|
}, 'Done'),
|
||||||
|
h('button', {
|
||||||
|
onClick: () => this.exportAsFile(`MetaMask ${nickname} Private Key`, plainKey),
|
||||||
|
}, 'Save as File'),
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -117,6 +123,21 @@ ExportAccountView.prototype.onExportKeyPress = function (event) {
|
|||||||
if (event.key !== 'Enter') return
|
if (event.key !== 'Enter') return
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
|
|
||||||
var input = document.getElementById('exportAccount').value
|
const input = document.getElementById('exportAccount').value
|
||||||
this.props.dispatch(actions.exportAccount(input, this.props.address))
|
this.props.dispatch(actions.exportAccount(input, this.props.address))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ExportAccountView.prototype.exportAsFile = function (filename, data) {
|
||||||
|
// source: https://stackoverflow.com/a/33542499 by Ludovic Feltz
|
||||||
|
const blob = new Blob([data], {type: 'text/csv'})
|
||||||
|
if (window.navigator.msSaveOrOpenBlob) {
|
||||||
|
window.navigator.msSaveBlob(blob, filename)
|
||||||
|
} else {
|
||||||
|
const elem = window.document.createElement('a')
|
||||||
|
elem.href = window.URL.createObjectURL(blob)
|
||||||
|
elem.download = filename
|
||||||
|
document.body.appendChild(elem)
|
||||||
|
elem.click()
|
||||||
|
document.body.removeChild(elem)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user