diff options
author | kumavis <aaron@kumavis.me> | 2017-01-12 18:24:33 +0800 |
---|---|---|
committer | kumavis <aaron@kumavis.me> | 2017-01-12 18:24:33 +0800 |
commit | 80514d73b5bc6887cea877194091c941cfb9a8e6 (patch) | |
tree | 24e051368ffe23fdc126ae30407f79febb4a7760 /app/scripts/migrations/005.js | |
parent | b33c51c0a6c7c8a7b0c0a9a6ca101f874f2db3d1 (diff) | |
download | tangerine-wallet-browser-80514d73b5bc6887cea877194091c941cfb9a8e6.tar.gz tangerine-wallet-browser-80514d73b5bc6887cea877194091c941cfb9a8e6.tar.zst tangerine-wallet-browser-80514d73b5bc6887cea877194091c941cfb9a8e6.zip |
migrations - wip - 005 multivault migration
Diffstat (limited to 'app/scripts/migrations/005.js')
-rw-r--r-- | app/scripts/migrations/005.js | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/app/scripts/migrations/005.js b/app/scripts/migrations/005.js new file mode 100644 index 000000000..4c76b1dcf --- /dev/null +++ b/app/scripts/migrations/005.js @@ -0,0 +1,44 @@ +const version = 5 + +const ObservableStore = require('../../app/scripts/lib/observable/') +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) + }) + }) + + }, +} |