modify verifySeedPhrase to async and call it from addNewAccount also

feature/default_network_editable
Csaba Solya 7 years ago
parent 8fde208f0b
commit 59007a6c36
  1. 66
      app/scripts/metamask-controller.js

@ -345,7 +345,7 @@ module.exports = class MetamaskController extends EventEmitter {
// primary HD keyring management
addNewAccount: nodeify(this.addNewAccount, this),
placeSeedWords: this.placeSeedWords.bind(this),
verifySeedPhrase: this.verifySeedPhrase.bind(this),
verifySeedPhrase: nodeify(this.verifySeedPhrase, this),
clearSeedWordCache: this.clearSeedWordCache.bind(this),
resetAccount: this.resetAccount.bind(this),
importAccountWithStrategy: this.importAccountWithStrategy.bind(this),
@ -567,14 +567,18 @@ module.exports = class MetamaskController extends EventEmitter {
// Opinionated Keyring Management
//
async addNewAccount (cb) {
async addNewAccount () {
const primaryKeyring = this.keyringController.getKeyringsByType('HD Key Tree')[0]
if (!primaryKeyring) return cb(new Error('MetamaskController - No HD Key Tree found'))
if (!primaryKeyring) {
throw new Error('MetamaskController - No HD Key Tree found')
}
const keyringController = this.keyringController
const oldAccounts = await keyringController.getAccounts()
const keyState = await keyringController.addNewAccount(primaryKeyring)
const newAccounts = await keyringController.getAccounts()
await this.verifySeedPhrase()
newAccounts.forEach((address) => {
if (!oldAccounts.includes(address)) {
this.preferencesController.setSelectedAddress(address)
@ -590,44 +594,42 @@ module.exports = class MetamaskController extends EventEmitter {
// Also used when revealing the seed words in the confirmation view.
placeSeedWords (cb) {
this.verifySeedPhrase((err, seedWords) => {
if (err) {
this.verifySeedPhrase()
.then((seedWords) => {
this.configManager.setSeedWords(seedWords)
return cb(null, seedWords)
})
.catch((err) => {
return cb(err)
}
this.configManager.setSeedWords(seedWords)
return cb(null, seedWords)
})
})
}
// Verifies the current vault's seed words if they can restore the
// accounts belonging to the current vault.
//
// Called when the first account is created and on unlocking the vault.
verifySeedPhrase (cb) {
async verifySeedPhrase () {
const primaryKeyring = this.keyringController.getKeyringsByType('HD Key Tree')[0]
if (!primaryKeyring) return cb(new Error('MetamaskController - No HD Key Tree found'))
primaryKeyring.serialize()
.then((serialized) => {
const seedWords = serialized.mnemonic
primaryKeyring.getAccounts()
.then((accounts) => {
if (accounts.length < 1) {
return cb(new Error('MetamaskController - No accounts found'))
}
seedPhraseVerifier.verifyAccounts(accounts, seedWords)
.then(() => {
return cb(null, seedWords)
})
.catch((err) => {
log.error(err)
return cb(err)
})
})
})
if (!primaryKeyring) {
throw new Error('MetamaskController - No HD Key Tree found')
}
const serialized = await primaryKeyring.serialize()
const seedWords = serialized.mnemonic
const accounts = await primaryKeyring.getAccounts()
if (accounts.length < 1) {
throw new Error('MetamaskController - No accounts found')
}
try {
await seedPhraseVerifier.verifyAccounts(accounts, seedWords)
return seedWords
} catch (err) {
log.error(err.message)
throw err
}
}
// ClearSeedWordCache

Loading…
Cancel
Save