mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-22 17:33:23 +01:00
Use addNewAccount
from core KeyringController
(#19814)
* refactor: use addNewAccount from core KeyringController * refactor: replace missed interaction * refactor: select account only when is new * refactor: use getAccounts to check if account is new
This commit is contained in:
parent
fed047f88b
commit
42d05ef9cd
@ -145,27 +145,21 @@ describe('MetaMaskController', function () {
|
||||
metamaskController.addNewAccount(1),
|
||||
metamaskController.addNewAccount(1),
|
||||
]);
|
||||
assert.deepEqual(
|
||||
Object.keys(addNewAccountResult1.identities),
|
||||
Object.keys(addNewAccountResult2.identities),
|
||||
);
|
||||
assert.equal(addNewAccountResult1, addNewAccountResult2);
|
||||
});
|
||||
|
||||
it('two successive calls with same accountCount give same result', async function () {
|
||||
await metamaskController.createNewVaultAndKeychain('test@123');
|
||||
const addNewAccountResult1 = await metamaskController.addNewAccount(1);
|
||||
const addNewAccountResult2 = await metamaskController.addNewAccount(1);
|
||||
assert.deepEqual(
|
||||
Object.keys(addNewAccountResult1.identities),
|
||||
Object.keys(addNewAccountResult2.identities),
|
||||
);
|
||||
assert.equal(addNewAccountResult1, addNewAccountResult2);
|
||||
});
|
||||
|
||||
it('two successive calls with different accountCount give different results', async function () {
|
||||
await metamaskController.createNewVaultAndKeychain('test@123');
|
||||
const addNewAccountResult1 = await metamaskController.addNewAccount(1);
|
||||
const addNewAccountResult2 = await metamaskController.addNewAccount(2);
|
||||
assert.notDeepEqual(addNewAccountResult1, addNewAccountResult2);
|
||||
assert.notEqual(addNewAccountResult1, addNewAccountResult2);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -2943,12 +2943,10 @@ export default class MetamaskController extends EventEmitter {
|
||||
|
||||
// seek out the first zero balance
|
||||
while (lastBalance !== '0x0') {
|
||||
await this.coreKeyringController.addNewAccount(accounts.length);
|
||||
const { addedAccountAddress } =
|
||||
await this.coreKeyringController.addNewAccount(accounts.length);
|
||||
accounts = await this.coreKeyringController.getAccounts();
|
||||
lastBalance = await this.getBalance(
|
||||
accounts[accounts.length - 1],
|
||||
ethQuery,
|
||||
);
|
||||
lastBalance = await this.getBalance(addedAccountAddress, ethQuery);
|
||||
}
|
||||
|
||||
// remove extra zero balance account potentially created from seeking ahead
|
||||
@ -3394,7 +3392,7 @@ export default class MetamaskController extends EventEmitter {
|
||||
* Adds a new account to the default (first) HD seed phrase Keyring.
|
||||
*
|
||||
* @param accountCount
|
||||
* @returns {} keyState
|
||||
* @returns {Promise<string>} The address of the newly-created account.
|
||||
*/
|
||||
async addNewAccount(accountCount) {
|
||||
const isActionMetricsQueueE2ETest =
|
||||
@ -3404,38 +3402,16 @@ export default class MetamaskController extends EventEmitter {
|
||||
await new Promise((resolve) => setTimeout(resolve, 5_000));
|
||||
}
|
||||
|
||||
const [primaryKeyring] = this.coreKeyringController.getKeyringsByType(
|
||||
KeyringType.hdKeyTree,
|
||||
);
|
||||
if (!primaryKeyring) {
|
||||
throw new Error('MetamaskController - No HD Key Tree found');
|
||||
}
|
||||
const { keyringController } = this;
|
||||
const { identities: oldIdentities } =
|
||||
this.preferencesController.store.getState();
|
||||
const oldAccounts = await this.coreKeyringController.getAccounts();
|
||||
|
||||
if (Object.keys(oldIdentities).length === accountCount) {
|
||||
const oldAccounts = await keyringController.getAccounts();
|
||||
const keyState = await keyringController.addNewAccount(primaryKeyring);
|
||||
const newAccounts = await keyringController.getAccounts();
|
||||
const { addedAccountAddress } =
|
||||
await this.coreKeyringController.addNewAccount(accountCount);
|
||||
|
||||
await this.verifySeedPhrase();
|
||||
|
||||
this.preferencesController.setAddresses(newAccounts);
|
||||
newAccounts.forEach((address) => {
|
||||
if (!oldAccounts.includes(address)) {
|
||||
this.preferencesController.setSelectedAddress(address);
|
||||
}
|
||||
});
|
||||
|
||||
const { identities } = this.preferencesController.store.getState();
|
||||
return { ...keyState, identities };
|
||||
if (!oldAccounts.includes(addedAccountAddress)) {
|
||||
this.preferencesController.setSelectedAddress(addedAccountAddress);
|
||||
}
|
||||
|
||||
return {
|
||||
...keyringController.memStore.getState(),
|
||||
identities: oldIdentities,
|
||||
};
|
||||
return addedAccountAddress;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -737,7 +737,7 @@ describe('MetaMaskController', function () {
|
||||
metamaskController.keyringController,
|
||||
'addNewAccount',
|
||||
);
|
||||
addNewAccountStub.returns({});
|
||||
addNewAccountStub.returns('0x123');
|
||||
|
||||
getAccountsStub = sinon.stub(
|
||||
metamaskController.keyringController,
|
||||
@ -818,7 +818,7 @@ describe('MetaMaskController', function () {
|
||||
await addNewAccount;
|
||||
assert.fail('should throw');
|
||||
} catch (e) {
|
||||
assert.equal(e.message, 'MetamaskController - No HD Key Tree found');
|
||||
assert.equal(e.message, 'No HD keyring found');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -398,7 +398,7 @@ describe('Actions', () => {
|
||||
|
||||
const addNewAccount = background.addNewAccount.callsFake((_, cb) =>
|
||||
cb(null, {
|
||||
identities: {},
|
||||
addedAccountAddress: '0x123',
|
||||
}),
|
||||
);
|
||||
|
||||
|
@ -432,12 +432,11 @@ export function addNewAccount(): ThunkAction<
|
||||
const oldIdentities = getState().metamask.identities;
|
||||
dispatch(showLoadingIndication());
|
||||
|
||||
let newIdentities;
|
||||
let addedAccountAddress;
|
||||
try {
|
||||
const { identities } = await submitRequestToBackground('addNewAccount', [
|
||||
addedAccountAddress = await submitRequestToBackground('addNewAccount', [
|
||||
Object.keys(oldIdentities).length,
|
||||
]);
|
||||
newIdentities = identities;
|
||||
} catch (error) {
|
||||
dispatch(displayWarning(error));
|
||||
throw error;
|
||||
@ -445,11 +444,8 @@ export function addNewAccount(): ThunkAction<
|
||||
dispatch(hideLoadingIndication());
|
||||
}
|
||||
|
||||
const newAccountAddress = Object.keys(newIdentities).find(
|
||||
(address) => !oldIdentities[address],
|
||||
);
|
||||
await forceUpdateMetamaskState(dispatch);
|
||||
return newAccountAddress;
|
||||
return addedAccountAddress;
|
||||
};
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user