diff options
author | kumavis <kumavis@users.noreply.github.com> | 2017-01-25 12:38:13 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-25 12:38:13 +0800 |
commit | d30612a2168b02c39a3eaa86f29e47d9edda07d8 (patch) | |
tree | 27eab17687c0c7a1b2583f51abf8064fa54de82a /app/scripts/migrations/_multi-keyring.js | |
parent | 4f39e8192cd94ad45d68992d5d1129f1612b1aa6 (diff) | |
parent | 0f33acb80ca90e07e6f7b7c083f52a1f4344c48e (diff) | |
download | tangerine-wallet-browser-d30612a2168b02c39a3eaa86f29e47d9edda07d8.tar tangerine-wallet-browser-d30612a2168b02c39a3eaa86f29e47d9edda07d8.tar.gz tangerine-wallet-browser-d30612a2168b02c39a3eaa86f29e47d9edda07d8.tar.bz2 tangerine-wallet-browser-d30612a2168b02c39a3eaa86f29e47d9edda07d8.tar.lz tangerine-wallet-browser-d30612a2168b02c39a3eaa86f29e47d9edda07d8.tar.xz tangerine-wallet-browser-d30612a2168b02c39a3eaa86f29e47d9edda07d8.tar.zst tangerine-wallet-browser-d30612a2168b02c39a3eaa86f29e47d9edda07d8.zip |
Merge pull request #999 from MetaMask/obs-store2
background - introduce ObservableStore (mark II)
Diffstat (limited to 'app/scripts/migrations/_multi-keyring.js')
-rw-r--r-- | app/scripts/migrations/_multi-keyring.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/app/scripts/migrations/_multi-keyring.js b/app/scripts/migrations/_multi-keyring.js new file mode 100644 index 000000000..04c966d4d --- /dev/null +++ b/app/scripts/migrations/_multi-keyring.js @@ -0,0 +1,51 @@ +const version = 5 + +/* + +This is an incomplete migration bc it requires post-decrypted data +which we dont have access to at the time of this writing. + +*/ + +const ObservableStore = require('obs-store') +const ConfigManager = require('../../app/scripts/lib/config-manager') +const IdentityStoreMigrator = require('../../app/scripts/lib/idStore-migrator') +const KeyringController = require('../../app/scripts/lib/keyring-controller') + +const password = 'obviously not correct' + +module.exports = { + version, + + migrate: function (versionedData) { + versionedData.meta.version = version + + let store = new ObservableStore(versionedData.data) + let configManager = new ConfigManager({ store }) + let idStoreMigrator = new IdentityStoreMigrator({ configManager }) + let keyringController = new KeyringController({ + configManager: configManager, + }) + + // attempt to migrate to multiVault + return idStoreMigrator.migratedVaultForPassword(password) + .then((result) => { + // skip if nothing to migrate + if (!result) return Promise.resolve(versionedData) + delete versionedData.data.wallet + // create new keyrings + const privKeys = result.lostAccounts.map(acct => acct.privateKey) + return Promise.all([ + keyringController.restoreKeyring(result.serialized), + keyringController.restoreKeyring({ type: 'Simple Key Pair', data: privKeys }), + ]).then(() => { + return keyringController.persistAllKeyrings(password) + }).then(() => { + // copy result on to state object + versionedData.data = store.get() + return Promise.resolve(versionedData) + }) + }) + + }, +} |