mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-22 09:57:02 +01:00
background controller - extract KeyringC.placeSeedWords to MetamaskC
This commit is contained in:
parent
bef4b78196
commit
463a56ff54
@ -150,12 +150,13 @@ module.exports = class KeyringController extends EventEmitter {
|
|||||||
mnemonic: seed,
|
mnemonic: seed,
|
||||||
numberOfAccounts: 1,
|
numberOfAccounts: 1,
|
||||||
})
|
})
|
||||||
}).then(() => {
|
})
|
||||||
const firstKeyring = this.keyrings[0]
|
.then((firstKeyring) => {
|
||||||
return firstKeyring.getAccounts()
|
return firstKeyring.getAccounts()
|
||||||
})
|
})
|
||||||
.then((accounts) => {
|
.then((accounts) => {
|
||||||
const firstAccount = accounts[0]
|
const firstAccount = accounts[0]
|
||||||
|
if (!firstAccount) throw new Error('KeyringController - First Account not found.')
|
||||||
const hexAccount = normalize(firstAccount)
|
const hexAccount = normalize(firstAccount)
|
||||||
this.configManager.setSelectedAccount(hexAccount)
|
this.configManager.setSelectedAccount(hexAccount)
|
||||||
return this.setupAccounts(accounts)
|
return this.setupAccounts(accounts)
|
||||||
@ -164,22 +165,6 @@ module.exports = class KeyringController extends EventEmitter {
|
|||||||
.then(this.fullUpdate.bind(this))
|
.then(this.fullUpdate.bind(this))
|
||||||
}
|
}
|
||||||
|
|
||||||
// PlaceSeedWords
|
|
||||||
// returns Promise( @object state )
|
|
||||||
//
|
|
||||||
// Adds the current vault's seed words to the UI's state tree.
|
|
||||||
//
|
|
||||||
// Used when creating a first vault, to allow confirmation.
|
|
||||||
// Also used when revealing the seed words in the confirmation view.
|
|
||||||
placeSeedWords (selectedKeyring) {
|
|
||||||
return selectedKeyring.serialize()
|
|
||||||
.then((serialized) => {
|
|
||||||
const seedWords = serialized.mnemonic
|
|
||||||
this.configManager.setSeedWords(seedWords)
|
|
||||||
return this.fullUpdate()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// ClearSeedWordCache
|
// ClearSeedWordCache
|
||||||
//
|
//
|
||||||
// returns Promise( @string currentSelectedAccount )
|
// returns Promise( @string currentSelectedAccount )
|
||||||
@ -424,15 +409,15 @@ module.exports = class KeyringController extends EventEmitter {
|
|||||||
this.clearKeyrings()
|
this.clearKeyrings()
|
||||||
return this.addNewKeyring('HD Key Tree', { numberOfAccounts: 1 })
|
return this.addNewKeyring('HD Key Tree', { numberOfAccounts: 1 })
|
||||||
.then((keyring) => {
|
.then((keyring) => {
|
||||||
const accounts = keyring.getAccounts()
|
return keyring.getAccounts()
|
||||||
|
})
|
||||||
|
.then((accounts) => {
|
||||||
const firstAccount = accounts[0]
|
const firstAccount = accounts[0]
|
||||||
if (!firstAccount) throw new Error('KeyringController - No account found on keychain.')
|
if (!firstAccount) throw new Error('KeyringController - No account found on keychain.')
|
||||||
const hexAccount = normalize(firstAccount)
|
const hexAccount = normalize(firstAccount)
|
||||||
this.configManager.setSelectedAccount(hexAccount)
|
this.configManager.setSelectedAccount(hexAccount)
|
||||||
this.emit('newAccount', hexAccount)
|
this.emit('newAccount', hexAccount)
|
||||||
return this.setupAccounts(accounts)
|
return this.setupAccounts(accounts)
|
||||||
}).then(() => {
|
|
||||||
return this.placeSeedWords(this.getKeyringsByType('HD Key Tree')[0])
|
|
||||||
})
|
})
|
||||||
.then(this.persistAllKeyrings.bind(this))
|
.then(this.persistAllKeyrings.bind(this))
|
||||||
}
|
}
|
||||||
|
@ -107,10 +107,19 @@ module.exports = class MetamaskController extends EventEmitter {
|
|||||||
// forward directly to keyringController
|
// forward directly to keyringController
|
||||||
createNewVaultAndKeychain: nodeify(keyringController.createNewVaultAndKeychain).bind(keyringController),
|
createNewVaultAndKeychain: nodeify(keyringController.createNewVaultAndKeychain).bind(keyringController),
|
||||||
createNewVaultAndRestore: nodeify(keyringController.createNewVaultAndRestore).bind(keyringController),
|
createNewVaultAndRestore: nodeify(keyringController.createNewVaultAndRestore).bind(keyringController),
|
||||||
|
// Adds the current vault's seed words to the UI's state tree.
|
||||||
|
//
|
||||||
|
// Used when creating a first vault, to allow confirmation.
|
||||||
|
// Also used when revealing the seed words in the confirmation view.
|
||||||
placeSeedWords: (cb) => {
|
placeSeedWords: (cb) => {
|
||||||
const primaryKeyring = keyringController.getKeyringsByType('HD Key Tree')[0]
|
const primaryKeyring = keyringController.getKeyringsByType('HD Key Tree')[0]
|
||||||
if (!primaryKeyring) return cb(new Error('MetamaskController - No HD Key Tree found'))
|
if (!primaryKeyring) return cb(new Error('MetamaskController - No HD Key Tree found'))
|
||||||
promiseToCallback(keyringController.placeSeedWords(primaryKeyring))(cb)
|
primaryKeyring.serialize()
|
||||||
|
.then((serialized) => {
|
||||||
|
const seedWords = serialized.mnemonic
|
||||||
|
this.configManager.setSeedWords(seedWords)
|
||||||
|
promiseToCallback(this.keyringController.fullUpdate())(cb)
|
||||||
|
})
|
||||||
},
|
},
|
||||||
clearSeedWordCache: nodeify(keyringController.clearSeedWordCache).bind(keyringController),
|
clearSeedWordCache: nodeify(keyringController.clearSeedWordCache).bind(keyringController),
|
||||||
setLocked: nodeify(keyringController.setLocked).bind(keyringController),
|
setLocked: nodeify(keyringController.setLocked).bind(keyringController),
|
||||||
|
@ -41,6 +41,9 @@ describe('KeyringController', function() {
|
|||||||
state = newState
|
state = newState
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
done(err)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
afterEach(function() {
|
afterEach(function() {
|
||||||
|
@ -230,7 +230,21 @@ function createNewVaultAndRestore (password, seed) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function createNewVaultAndKeychain (password) {
|
function createNewVaultAndKeychain (password) {
|
||||||
return callBackgroundThenUpdate(background.createNewVaultAndKeychain, password)
|
return (dispatch) => {
|
||||||
|
dispatch(actions.showLoadingIndication())
|
||||||
|
background.createNewVaultAndKeychain(password, (err, newState) => {
|
||||||
|
if (err) {
|
||||||
|
return dispatch(actions.displayWarning(err.message))
|
||||||
|
}
|
||||||
|
background.placeSeedWords((err, newState) => {
|
||||||
|
if (err) {
|
||||||
|
return dispatch(actions.displayWarning(err.message))
|
||||||
|
}
|
||||||
|
dispatch(actions.hideLoadingIndication())
|
||||||
|
dispatch(actions.updateMetamaskState(newState))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function revealSeedConfirmation () {
|
function revealSeedConfirmation () {
|
||||||
|
Loading…
Reference in New Issue
Block a user