Skip to content

Commit

Permalink
refactor: use addNewAccount from core KeyringController
Browse files Browse the repository at this point in the history
  • Loading branch information
mikesposito committed Jul 31, 2023
1 parent b76875a commit ab9f74c
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 49 deletions.
12 changes: 3 additions & 9 deletions app/scripts/metamask-controller.actions.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
});
});

Expand Down
34 changes: 4 additions & 30 deletions app/scripts/metamask-controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -3387,38 +3387,12 @@ export default class MetamaskController extends EventEmitter {
await new Promise((resolve) => setTimeout(resolve, 5_000));
}

const [primaryKeyring] = this.keyringController.getKeyringsByType(
KeyringType.hdKeyTree,
);
if (!primaryKeyring) {
throw new Error('MetamaskController - No HD Key Tree found');
}
const { keyringController } = this;
const { identities: oldIdentities } =
this.preferencesController.store.getState();

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.setSelectedAddress(addedAccountAddress);

this.preferencesController.setAddresses(newAccounts);
newAccounts.forEach((address) => {
if (!oldAccounts.includes(address)) {
this.preferencesController.setSelectedAddress(address);
}
});

const { identities } = this.preferencesController.store.getState();
return { ...keyState, identities };
}

return {
...keyringController.memStore.getState(),
identities: oldIdentities,
};
return addedAccountAddress;
}

/**
Expand Down
4 changes: 2 additions & 2 deletions app/scripts/metamask-controller.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -716,7 +716,7 @@ describe('MetaMaskController', function () {
metamaskController.keyringController,
'addNewAccount',
);
addNewAccountStub.returns({});
addNewAccountStub.returns('0x123');

getAccountsStub = sinon.stub(
metamaskController.keyringController,
Expand Down Expand Up @@ -797,7 +797,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');
}
});
});
Expand Down
2 changes: 1 addition & 1 deletion ui/store/actions.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,7 @@ describe('Actions', () => {

const addNewAccount = background.addNewAccount.callsFake((_, cb) =>
cb(null, {
identities: {},
addedAccountAddress: '0x123',
}),
);

Expand Down
10 changes: 3 additions & 7 deletions ui/store/actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -432,24 +432,20 @@ 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;
} finally {
dispatch(hideLoadingIndication());
}

const newAccountAddress = Object.keys(newIdentities).find(
(address) => !oldIdentities[address],
);
await forceUpdateMetamaskState(dispatch);
return newAccountAddress;
return addedAccountAddress;
};
}

Expand Down

0 comments on commit ab9f74c

Please sign in to comment.