mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Add PreferencesController#setAddresses to update ids
This commit is contained in:
parent
cbe4d0d88c
commit
c54e4c7191
@ -63,6 +63,16 @@ class PreferencesController {
|
||||
this.store.updateState({ currentLocale: key })
|
||||
}
|
||||
|
||||
setAddresses (addresses) {
|
||||
const oldIdentities = this.store.getState().identities
|
||||
const identities = addresses.reduce((ids, address, index) => {
|
||||
const oldId = oldIdentities[address] || {}
|
||||
ids[address] = {name: `Account ${index + 1}`, address, ...oldId}
|
||||
return ids
|
||||
}, {})
|
||||
this.store.updateState({ identities })
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for the `selectedAddress` property
|
||||
*
|
||||
|
@ -434,7 +434,9 @@ module.exports = class MetamaskController extends EventEmitter {
|
||||
|
||||
} else {
|
||||
vault = await this.keyringController.createNewVaultAndKeychain(password)
|
||||
this.selectFirstIdentity(vault)
|
||||
const accounts = await this.keyringController.getAccounts()
|
||||
this.preferencesController.setAddresses(accounts)
|
||||
this.selectFirstIdentity()
|
||||
}
|
||||
release()
|
||||
} catch (err) {
|
||||
@ -454,7 +456,9 @@ module.exports = class MetamaskController extends EventEmitter {
|
||||
const release = await this.createVaultMutex.acquire()
|
||||
try {
|
||||
const vault = await this.keyringController.createNewVaultAndRestore(password, seed)
|
||||
this.selectFirstIdentity(vault)
|
||||
const accounts = await this.keyringController.getAccounts()
|
||||
this.preferencesController.setAddresses(accounts)
|
||||
this.selectFirstIdentity()
|
||||
release()
|
||||
return vault
|
||||
} catch (err) {
|
||||
@ -472,12 +476,10 @@ module.exports = class MetamaskController extends EventEmitter {
|
||||
*/
|
||||
|
||||
/**
|
||||
* Retrieves the first Identiy from the passed Vault and selects the related address
|
||||
*
|
||||
* @param {} vault
|
||||
* Sets the first address in the state to the selected address
|
||||
*/
|
||||
selectFirstIdentity (vault) {
|
||||
const { identities } = vault
|
||||
selectFirstIdentity () {
|
||||
const { identities } = this.preferencesController.store.getState()
|
||||
const address = Object.keys(identities)[0]
|
||||
this.preferencesController.setSelectedAddress(address)
|
||||
}
|
||||
@ -503,13 +505,15 @@ module.exports = class MetamaskController extends EventEmitter {
|
||||
|
||||
await this.verifySeedPhrase()
|
||||
|
||||
this.preferencesController.setAddresses(newAccounts)
|
||||
newAccounts.forEach((address) => {
|
||||
if (!oldAccounts.includes(address)) {
|
||||
this.preferencesController.setSelectedAddress(address)
|
||||
}
|
||||
})
|
||||
|
||||
return keyState
|
||||
const {identities} = this.preferencesController.store.getState()
|
||||
return {...keyState, identities}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -8,6 +8,50 @@ describe('preferences controller', function () {
|
||||
preferencesController = new PreferencesController()
|
||||
})
|
||||
|
||||
describe('setAddresses', function () {
|
||||
it('should keep a map of addresses to names and addresses in the store', function () {
|
||||
preferencesController.setAddresses([
|
||||
'0xda22le',
|
||||
'0x7e57e2',
|
||||
])
|
||||
|
||||
const {identities} = preferencesController.store.getState()
|
||||
assert.deepEqual(identities, {
|
||||
'0xda22le': {
|
||||
name: 'Account 1',
|
||||
address: '0xda22le',
|
||||
},
|
||||
'0x7e57e2': {
|
||||
name: 'Account 2',
|
||||
address: '0x7e57e2',
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
it('should replace its list of addresses', function () {
|
||||
preferencesController.setAddresses([
|
||||
'0xda22le',
|
||||
'0x7e57e2',
|
||||
])
|
||||
preferencesController.setAddresses([
|
||||
'0xda22le77',
|
||||
'0x7e57e277',
|
||||
])
|
||||
|
||||
const {identities} = preferencesController.store.getState()
|
||||
assert.deepEqual(identities, {
|
||||
'0xda22le77': {
|
||||
name: 'Account 1',
|
||||
address: '0xda22le77',
|
||||
},
|
||||
'0x7e57e277': {
|
||||
name: 'Account 2',
|
||||
address: '0x7e57e277',
|
||||
},
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('getTokens', function () {
|
||||
it('should return an empty list initially', async function () {
|
||||
await preferencesController.setSelectedAddress('0x7e57e2')
|
||||
|
Loading…
Reference in New Issue
Block a user