1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 01:39:44 +01:00

Add reveal of seed words.

This commit is contained in:
Kevin Serrano 2016-11-01 22:19:04 -07:00
parent f2bfdd7f8c
commit 8f3db0dbc0
No known key found for this signature in database
GPG Key ID: 7CC862A58D2889B4
5 changed files with 52 additions and 2 deletions

View File

@ -132,8 +132,6 @@ module.exports = class KeyringController extends EventEmitter {
.then((encryptedString) => { .then((encryptedString) => {
this.configManager.setVault(encryptedString) this.configManager.setVault(encryptedString)
cb(null, serialized) cb(null, serialized)
// NORMAL BEHAVIOR:
// return cb(null, this.getState())
}) })
.catch((err) => { .catch((err) => {
cb(err) cb(err)
@ -157,6 +155,14 @@ module.exports = class KeyringController extends EventEmitter {
} }
} }
placeSeedWords () {
const firstKeyring = this.keyrings[0]
const seedWords = firstKeyring.serialize().mnemonic
this.configManager.setSeedWords(seedWords)
}
submitPassword(password, cb) { submitPassword(password, cb) {
this.loadKey(password) this.loadKey(password)
.then((key) => { .then((key) => {

View File

@ -59,6 +59,7 @@ module.exports = class MetamaskController {
setGasMultiplier: this.setGasMultiplier.bind(this), setGasMultiplier: this.setGasMultiplier.bind(this),
// forward directly to keyringController // forward directly to keyringController
placeSeedWords: keyringController.placeSeedWords.bind(keyringController),
createNewVaultAndKeychain: keyringController.createNewVaultAndKeychain.bind(keyringController), createNewVaultAndKeychain: keyringController.createNewVaultAndKeychain.bind(keyringController),
createNewVaultAndRestore: keyringController.createNewVaultAndRestore.bind(keyringController), createNewVaultAndRestore: keyringController.createNewVaultAndRestore.bind(keyringController),
clearSeedWordCache: keyringController.clearSeedWordCache.bind(keyringController), clearSeedWordCache: keyringController.clearSeedWordCache.bind(keyringController),

View File

@ -30,6 +30,10 @@ var actions = {
addNewAccount, addNewAccount,
showNewVaultSeed: showNewVaultSeed, showNewVaultSeed: showNewVaultSeed,
showInfoPage: showInfoPage, showInfoPage: showInfoPage,
// seed recovery actions
REVEAL_SEED_CONFIRMATION: 'REVEAL_SEED_CONFIRMATION',
revealSeedConfirmation: revealSeedConfirmation,
requestRevealSeed: requestRevealSeed,
// unlock screen // unlock screen
UNLOCK_IN_PROGRESS: 'UNLOCK_IN_PROGRESS', UNLOCK_IN_PROGRESS: 'UNLOCK_IN_PROGRESS',
UNLOCK_FAILED: 'UNLOCK_FAILED', UNLOCK_FAILED: 'UNLOCK_FAILED',
@ -213,6 +217,25 @@ function createNewVaultAndKeychain (password, entropy) {
} }
} }
function revealSeedConfirmation () {
return {
type: this.REVEAL_SEED_CONFIRMATION,
}
}
function requestRevealSeed (password) {
return (dispatch) => {
dispatch(actions.showLoadingIndication())
background.submitPassword(password, (err, newState) => {
dispatch(actions.hideLoadingIndication())
if (err) return dispatch(actions.displayWarning(err.message))
background.placeSeedWords()
dispatch(actions.showNewVaultSeed())
})
}
}
function addNewKeyring (type, opts) { function addNewKeyring (type, opts) {
return (dispatch) => { return (dispatch) => {
dispatch(actions.showLoadingIndication()) dispatch(actions.showLoadingIndication())

View File

@ -28,6 +28,7 @@ const BuyView = require('./components/buy-button-subview')
const QrView = require('./components/qr-code') const QrView = require('./components/qr-code')
const HDCreateVaultComplete = require('./keychains/hd/create-vault-complete') const HDCreateVaultComplete = require('./keychains/hd/create-vault-complete')
const HDRestoreVaultScreen = require('./keychains/hd/restore-vault') const HDRestoreVaultScreen = require('./keychains/hd/restore-vault')
const RevealSeedConfirmation = require('./keychains/hd/recover-seed/confirmation')
module.exports = connect(mapStateToProps)(App) module.exports = connect(mapStateToProps)(App)
@ -411,6 +412,9 @@ App.prototype.renderPrimary = function () {
case 'config': case 'config':
return h(ConfigScreen, {key: 'config'}) return h(ConfigScreen, {key: 'config'})
case 'reveal-seed-conf':
return h(RevealSeedConfirmation, {key: 'reveal-seed-conf'})
case 'info': case 'info':
return h(InfoScreen, {key: 'info'}) return h(InfoScreen, {key: 'info'})

View File

@ -77,6 +77,22 @@ ConfigScreen.prototype.render = function () {
currentConversionInformation(metamaskState, state), currentConversionInformation(metamaskState, state),
h('hr.horizontal-line'), h('hr.horizontal-line'),
h('div', {
style: {
marginTop: '20px',
},
}, [
h('button', {
style: {
alignSelf: 'center',
},
onClick (event) {
event.preventDefault()
state.dispatch(actions.revealSeedConfirmation())
},
}, 'Reveal Seed Words'),
]),
]), ]),
]), ]),
]) ])