mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-22 09:57:02 +01:00
Add migration to move identities from KeyringController
This commit is contained in:
parent
50af02e74b
commit
2d13fac476
40
app/scripts/migrations/026.js
Normal file
40
app/scripts/migrations/026.js
Normal file
@ -0,0 +1,40 @@
|
||||
const version = 26
|
||||
|
||||
/*
|
||||
|
||||
This migration moves the identities stored in the KeyringController
|
||||
into the PreferencesController
|
||||
|
||||
*/
|
||||
|
||||
const clone = require('clone')
|
||||
|
||||
module.exports = {
|
||||
version,
|
||||
migrate (originalVersionedData) {
|
||||
const versionedData = clone(originalVersionedData)
|
||||
versionedData.meta.version = version
|
||||
try {
|
||||
const state = versionedData.data
|
||||
versionedData.data = transformState(state)
|
||||
} catch (err) {
|
||||
console.warn(`MetaMask Migration #${version}` + err.stack)
|
||||
return Promise.reject(err)
|
||||
}
|
||||
return Promise.resolve(versionedData)
|
||||
},
|
||||
}
|
||||
|
||||
function transformState (state) {
|
||||
if (!state.KeyringController || !state.PreferencesController) {
|
||||
return
|
||||
}
|
||||
|
||||
if (!state.KeyringController.walletNicknames) {
|
||||
return state
|
||||
}
|
||||
|
||||
state.PreferencesController.identities = state.KeyringController.walletNicknames
|
||||
delete state.KeyringController.walletNicknames
|
||||
return state
|
||||
}
|
@ -36,4 +36,5 @@ module.exports = [
|
||||
require('./023'),
|
||||
require('./024'),
|
||||
require('./025'),
|
||||
require('./026'),
|
||||
]
|
||||
|
41
test/unit/migrations/026-test.js
Normal file
41
test/unit/migrations/026-test.js
Normal file
@ -0,0 +1,41 @@
|
||||
const assert = require('assert')
|
||||
const migration26 = require('../../../app/scripts/migrations/026')
|
||||
const oldStorage = {
|
||||
'meta': {'version': 25},
|
||||
'data': {
|
||||
'PreferencesController': {},
|
||||
'KeyringController': {
|
||||
'walletNicknames': {
|
||||
'0x1e77e2': 'Test Account 1',
|
||||
'0x7e57e2': 'Test Account 2',
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
describe('migration #26', () => {
|
||||
it('should move the identities from KeyringController', (done) => {
|
||||
migration26.migrate(oldStorage)
|
||||
.then((newStorage) => {
|
||||
const identities = newStorage.data.PreferencesController.identities
|
||||
assert.deepEqual(identities, {
|
||||
'0x1e77e2': 'Test Account 1',
|
||||
'0x7e57e2': 'Test Account 2',
|
||||
})
|
||||
assert.strictEqual(newStorage.data.KeyringController.walletNicknames, undefined)
|
||||
done()
|
||||
})
|
||||
.catch(done)
|
||||
})
|
||||
|
||||
it('should successfully migrate first time state', (done) => {
|
||||
migration26.migrate({
|
||||
meta: {},
|
||||
data: require('../../../app/scripts/first-time-state'),
|
||||
})
|
||||
.then((migratedData) => {
|
||||
assert.equal(migratedData.meta.version, migration26.version)
|
||||
done()
|
||||
}).catch(done)
|
||||
})
|
||||
})
|
Loading…
Reference in New Issue
Block a user