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

Break up migration function

This commit is contained in:
Dan Finlay 2016-12-22 13:56:45 -08:00
parent 291403c13f
commit 9e54e3baa0

View File

@ -442,37 +442,37 @@ module.exports = class MetamaskController {
// with the provided password, so the other unlock steps // with the provided password, so the other unlock steps
// may be completed without interruption. // may be completed without interruption.
migrateOldVaultIfAny (password) { migrateOldVaultIfAny (password) {
const shouldMigrate = !!this.configManager.getWallet() && !this.configManager.getVault()
if (!shouldMigrate) { if (!this.checkIfShouldMigrate()) {
return Promise.resolve(password) return Promise.resolve(password)
} }
const keyringController = this.keyringController
return this.idStoreMigrator.migratedVaultForPassword(password) return this.idStoreMigrator.migratedVaultForPassword(password)
.then((result) => { .then(this.restoreOldVaultAccounts.bind(this))
.then(this.restoreOldLostAccounts.bind(this))
this.keyringController.password = password .then(keyringController.persistAllKeyrings.bind(keyringController))
const { serialized } = result .then(() => password)
// Restore the correct accounts first:
return this.keyringController.restoreKeyring(serialized)
.then(() => result)
}).then((result) => {
// 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(() => {
// Persist all these newly restored items to disk: checkIfShouldMigrate() {
return this.keyringController.persistAllKeyrings() return !!this.configManager.getWallet() && !this.configManager.getVault()
}
// Ultimately pass the password back for normal unlocking: restoreOldVaultAccounts(migratorOutput) {
}).then((result) => password) const { serialized } = migratorOutput
return this.keyringController.restoreKeyring(serialized)
.then(() => migratorOutput)
}
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 // IMPORT LOST ACCOUNTS