modify verifySeedPhrase to async and call it from addNewAccount also

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

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

Loading…
Cancel
Save