mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-22 01:47:00 +01:00
Use createNewVaultAndRestore
from core KeyringController
(#19816)
* refactor: use createNewVaultAndRestore from core kc * test: use createNewVaultAndRestore from core * refactor: apply @mcmire suggestion * fix: mnemonic conversion
This commit is contained in:
parent
d28f699c57
commit
d6eecf8584
@ -89,6 +89,7 @@ import {
|
||||
ERC20,
|
||||
ERC721,
|
||||
} from '@metamask/controller-utils';
|
||||
import { wordlist } from '@metamask/scure-bip39/dist/wordlists/english';
|
||||
|
||||
///: BEGIN:ONLY_INCLUDE_IN(build-mmi)
|
||||
import { toChecksumHexAddress } from '../../shared/modules/hexstring-utils';
|
||||
@ -2905,8 +2906,6 @@ export default class MetamaskController extends EventEmitter {
|
||||
|
||||
const seedPhraseAsBuffer = Buffer.from(encodedSeedPhrase);
|
||||
|
||||
const { keyringController } = this;
|
||||
|
||||
// clear known identities
|
||||
this.preferencesController.setAddresses([]);
|
||||
|
||||
@ -2930,29 +2929,22 @@ export default class MetamaskController extends EventEmitter {
|
||||
this.txController.txStateManager.clearUnapprovedTxs();
|
||||
|
||||
// create new vault
|
||||
const vault = await keyringController.createNewVaultAndRestore(
|
||||
const vault = await this.coreKeyringController.createNewVaultAndRestore(
|
||||
password,
|
||||
seedPhraseAsBuffer,
|
||||
this._convertMnemonicToWordlistIndices(seedPhraseAsBuffer),
|
||||
);
|
||||
|
||||
const ethQuery = new EthQuery(this.provider);
|
||||
accounts = await keyringController.getAccounts();
|
||||
accounts = await this.coreKeyringController.getAccounts();
|
||||
lastBalance = await this.getBalance(
|
||||
accounts[accounts.length - 1],
|
||||
ethQuery,
|
||||
);
|
||||
|
||||
const [primaryKeyring] = this.coreKeyringController.getKeyringsByType(
|
||||
KeyringType.hdKeyTree,
|
||||
);
|
||||
if (!primaryKeyring) {
|
||||
throw new Error('MetamaskController - No HD Key Tree found');
|
||||
}
|
||||
|
||||
// seek out the first zero balance
|
||||
while (lastBalance !== '0x0') {
|
||||
await keyringController.addNewAccount(primaryKeyring);
|
||||
accounts = await keyringController.getAccounts();
|
||||
await this.coreKeyringController.addNewAccount(accounts.length);
|
||||
accounts = await this.coreKeyringController.getAccounts();
|
||||
lastBalance = await this.getBalance(
|
||||
accounts[accounts.length - 1],
|
||||
ethQuery,
|
||||
@ -2962,7 +2954,7 @@ export default class MetamaskController extends EventEmitter {
|
||||
// remove extra zero balance account potentially created from seeking ahead
|
||||
if (accounts.length > 1 && lastBalance === '0x0') {
|
||||
await this.removeAccount(accounts[accounts.length - 1]);
|
||||
accounts = await keyringController.getAccounts();
|
||||
accounts = await this.coreKeyringController.getAccounts();
|
||||
}
|
||||
|
||||
// This must be set as soon as possible to communicate to the
|
||||
@ -2973,8 +2965,6 @@ export default class MetamaskController extends EventEmitter {
|
||||
this.preferencesController.getLedgerTransportPreference();
|
||||
this.setLedgerTransportPreference(transportPreference);
|
||||
|
||||
// set new identities
|
||||
this.preferencesController.setAddresses(accounts);
|
||||
this.selectFirstIdentity();
|
||||
|
||||
return vault;
|
||||
@ -2983,6 +2973,20 @@ export default class MetamaskController extends EventEmitter {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Encodes a BIP-39 mnemonic as the indices of words in the English BIP-39 wordlist.
|
||||
*
|
||||
* @param {Buffer} mnemonic - The BIP-39 mnemonic.
|
||||
* @returns {Buffer} The Unicode code points for the seed phrase formed from the words in the wordlist.
|
||||
*/
|
||||
_convertMnemonicToWordlistIndices(mnemonic) {
|
||||
const indices = mnemonic
|
||||
.toString()
|
||||
.split(' ')
|
||||
.map((word) => wordlist.indexOf(word));
|
||||
return new Uint8Array(new Uint16Array(indices).buffer);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an account balance from the AccountTracker or request it directly from the network.
|
||||
*
|
||||
|
@ -307,7 +307,7 @@ describe('MetaMaskController', function () {
|
||||
'createNewVaultAndKeychain',
|
||||
);
|
||||
sandbox.spy(
|
||||
metamaskController.keyringController,
|
||||
metamaskController.coreKeyringController,
|
||||
'createNewVaultAndRestore',
|
||||
);
|
||||
});
|
||||
@ -423,7 +423,7 @@ describe('MetaMaskController', function () {
|
||||
await metamaskController.createNewVaultAndRestore(password, TEST_SEED);
|
||||
|
||||
assert(
|
||||
metamaskController.keyringController.createNewVaultAndRestore
|
||||
metamaskController.coreKeyringController.createNewVaultAndRestore
|
||||
.calledTwice,
|
||||
);
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user