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 })
|
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
|
* Setter for the `selectedAddress` property
|
||||||
*
|
*
|
||||||
|
@ -434,7 +434,9 @@ module.exports = class MetamaskController extends EventEmitter {
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
vault = await this.keyringController.createNewVaultAndKeychain(password)
|
vault = await this.keyringController.createNewVaultAndKeychain(password)
|
||||||
this.selectFirstIdentity(vault)
|
const accounts = await this.keyringController.getAccounts()
|
||||||
|
this.preferencesController.setAddresses(accounts)
|
||||||
|
this.selectFirstIdentity()
|
||||||
}
|
}
|
||||||
release()
|
release()
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
@ -454,7 +456,9 @@ module.exports = class MetamaskController extends EventEmitter {
|
|||||||
const release = await this.createVaultMutex.acquire()
|
const release = await this.createVaultMutex.acquire()
|
||||||
try {
|
try {
|
||||||
const vault = await this.keyringController.createNewVaultAndRestore(password, seed)
|
const vault = await this.keyringController.createNewVaultAndRestore(password, seed)
|
||||||
this.selectFirstIdentity(vault)
|
const accounts = await this.keyringController.getAccounts()
|
||||||
|
this.preferencesController.setAddresses(accounts)
|
||||||
|
this.selectFirstIdentity()
|
||||||
release()
|
release()
|
||||||
return vault
|
return vault
|
||||||
} catch (err) {
|
} 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
|
* Sets the first address in the state to the selected address
|
||||||
*
|
|
||||||
* @param {} vault
|
|
||||||
*/
|
*/
|
||||||
selectFirstIdentity (vault) {
|
selectFirstIdentity () {
|
||||||
const { identities } = vault
|
const { identities } = this.preferencesController.store.getState()
|
||||||
const address = Object.keys(identities)[0]
|
const address = Object.keys(identities)[0]
|
||||||
this.preferencesController.setSelectedAddress(address)
|
this.preferencesController.setSelectedAddress(address)
|
||||||
}
|
}
|
||||||
@ -503,13 +505,15 @@ module.exports = class MetamaskController extends EventEmitter {
|
|||||||
|
|
||||||
await this.verifySeedPhrase()
|
await this.verifySeedPhrase()
|
||||||
|
|
||||||
|
this.preferencesController.setAddresses(newAccounts)
|
||||||
newAccounts.forEach((address) => {
|
newAccounts.forEach((address) => {
|
||||||
if (!oldAccounts.includes(address)) {
|
if (!oldAccounts.includes(address)) {
|
||||||
this.preferencesController.setSelectedAddress(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()
|
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 () {
|
describe('getTokens', function () {
|
||||||
it('should return an empty list initially', async function () {
|
it('should return an empty list initially', async function () {
|
||||||
await preferencesController.setSelectedAddress('0x7e57e2')
|
await preferencesController.setSelectedAddress('0x7e57e2')
|
||||||
|
Loading…
Reference in New Issue
Block a user