From 9e54e3baa0799e5083a9f9152f128077a2ee0527 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Thu, 22 Dec 2016 13:56:45 -0800 Subject: Break up migration function --- app/scripts/metamask-controller.js | 48 +++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index ab4cb8ed8..983a590d7 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -442,37 +442,37 @@ module.exports = class MetamaskController { // with the provided password, so the other unlock steps // may be completed without interruption. migrateOldVaultIfAny (password) { - const shouldMigrate = !!this.configManager.getWallet() && !this.configManager.getVault() - if (!shouldMigrate) { + + if (!this.checkIfShouldMigrate()) { return Promise.resolve(password) } - return this.idStoreMigrator.migratedVaultForPassword(password) - .then((result) => { - - this.keyringController.password = password - const { serialized } = result - - // Restore the correct accounts first: - return this.keyringController.restoreKeyring(serialized) - .then(() => result) + const keyringController = this.keyringController - }).then((result) => { + return this.idStoreMigrator.migratedVaultForPassword(password) + .then(this.restoreOldVaultAccounts.bind(this)) + .then(this.restoreOldLostAccounts.bind(this)) + .then(keyringController.persistAllKeyrings.bind(keyringController)) + .then(() => password) + } - // Now we restore any lost accounts: - const { lostAccounts } = result - if (result && lostAccounts) { - this.configManager.setLostAccounts(lostAccounts.map((acct) => acct.address)) - return this.importLostAccounts(result) - } - return Promise.resolve(result) - }).then(() => { + checkIfShouldMigrate() { + return !!this.configManager.getWallet() && !this.configManager.getVault() + } - // Persist all these newly restored items to disk: - return this.keyringController.persistAllKeyrings() + restoreOldVaultAccounts(migratorOutput) { + const { serialized } = migratorOutput + return this.keyringController.restoreKeyring(serialized) + .then(() => migratorOutput) + } - // Ultimately pass the password back for normal unlocking: - }).then((result) => password) + restoreOldLostAccounts(migratorOutput) { + const { lostAccounts } = migratorOutput + if (lostAccounts) { + this.configManager.setLostAccounts(lostAccounts.map(acct => acct.address)) + return this.importLostAccounts(migratorOutput) + } + return Promise.resolve(migratorOutput) } // IMPORT LOST ACCOUNTS -- cgit v1.2.3