From 8d0d433ed06a46308d15a24b342582ea2304ed6e Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Mon, 30 Sep 2024 13:53:50 +0200 Subject: [PATCH 1/2] fix: `addAccounts` returns new accounts only --- packages/keyring-eth-trezor/jest.config.js | 4 +-- .../src/trezor-keyring.test.ts | 27 ++++++++++++++----- .../keyring-eth-trezor/src/trezor-keyring.ts | 4 ++- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/packages/keyring-eth-trezor/jest.config.js b/packages/keyring-eth-trezor/jest.config.js index 69dd68128..3aa07dfba 100644 --- a/packages/keyring-eth-trezor/jest.config.js +++ b/packages/keyring-eth-trezor/jest.config.js @@ -25,8 +25,8 @@ module.exports = merge(baseConfig, { global: { branches: 48.27, functions: 91.22, - lines: 88.35, - statements: 88.6, + lines: 89.89, + statements: 90.1, }, }, }); diff --git a/packages/keyring-eth-trezor/src/trezor-keyring.test.ts b/packages/keyring-eth-trezor/src/trezor-keyring.test.ts index 189cbc26f..ab165665d 100644 --- a/packages/keyring-eth-trezor/src/trezor-keyring.test.ts +++ b/packages/keyring-eth-trezor/src/trezor-keyring.test.ts @@ -237,7 +237,10 @@ describe('TrezorKeyring', function () { keyring.setAccountToUnlock(0); await keyring.addAccounts(); keyring.setAccountToUnlock(2); - const accounts = await keyring.addAccounts(); + + await keyring.addAccounts(); + + const accounts = await keyring.getAccounts(); expect(accounts[0]).toBe(fakeAccounts[0]); expect(accounts[1]).toBe(fakeAccounts[2]); }); @@ -246,16 +249,26 @@ describe('TrezorKeyring', function () { describe('with a numeric argument', function () { it('returns that number of accounts', async function () { keyring.setAccountToUnlock(0); - const accounts = await keyring.addAccounts(5); - expect(accounts).toHaveLength(5); + const firstBatch = await keyring.addAccounts(3); + keyring.setAccountToUnlock(3); + const secondBatch = await keyring.addAccounts(2); + + expect(firstBatch).toHaveLength(3); + expect(secondBatch).toHaveLength(2); }); it('returns the expected accounts', async function () { keyring.setAccountToUnlock(0); - const accounts = await keyring.addAccounts(3); - expect(accounts[0]).toBe(fakeAccounts[0]); - expect(accounts[1]).toBe(fakeAccounts[1]); - expect(accounts[2]).toBe(fakeAccounts[2]); + const firstBatch = await keyring.addAccounts(3); + keyring.setAccountToUnlock(3); + const secondBatch = await keyring.addAccounts(2); + + expect(firstBatch).toStrictEqual([ + fakeAccounts[0], + fakeAccounts[1], + fakeAccounts[2], + ]); + expect(secondBatch).toStrictEqual([fakeAccounts[3], fakeAccounts[4]]); }); }); }); diff --git a/packages/keyring-eth-trezor/src/trezor-keyring.ts b/packages/keyring-eth-trezor/src/trezor-keyring.ts index 1b88ed917..03a608e5b 100644 --- a/packages/keyring-eth-trezor/src/trezor-keyring.ts +++ b/packages/keyring-eth-trezor/src/trezor-keyring.ts @@ -185,15 +185,17 @@ export class TrezorKeyring extends EventEmitter { .then((_) => { const from = this.unlockedAccount; const to = from + n; + const newAccounts = []; for (let i = from; i < to; i++) { const address = this.#addressFromIndex(pathBase, i); if (!this.accounts.includes(address)) { this.accounts = [...this.accounts, address]; + newAccounts.push(address); } this.page = 0; } - resolve(this.accounts); + resolve(newAccounts); }) .catch((e) => { reject(e); From 36245af203217910d9a2d2598ef9662657329e42 Mon Sep 17 00:00:00 2001 From: Michele Esposito <34438276+mikesposito@users.noreply.github.com> Date: Wed, 2 Oct 2024 14:28:32 +0200 Subject: [PATCH 2/2] Update packages/keyring-eth-trezor/src/trezor-keyring.test.ts Co-authored-by: Charly Chevalier --- packages/keyring-eth-trezor/src/trezor-keyring.test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/keyring-eth-trezor/src/trezor-keyring.test.ts b/packages/keyring-eth-trezor/src/trezor-keyring.test.ts index ab165665d..8a02abb05 100644 --- a/packages/keyring-eth-trezor/src/trezor-keyring.test.ts +++ b/packages/keyring-eth-trezor/src/trezor-keyring.test.ts @@ -237,7 +237,6 @@ describe('TrezorKeyring', function () { keyring.setAccountToUnlock(0); await keyring.addAccounts(); keyring.setAccountToUnlock(2); - await keyring.addAccounts(); const accounts = await keyring.getAccounts();