Skip to content

Commit

Permalink
refactor: improve error messages (#232)
Browse files Browse the repository at this point in the history
* fix: Currently ledger keyring throw `unknown error` when user didn't turn on `eth` app in ledger. this code change provide better error message to indicate what happen.

* fix: Currently ledger keyring throw `unknown error` when user lock ledger or didn't turn on `eth` app in ledger in MM extension. this code change provide better error message to indicate what happen.

* fix: Currently ledger keyring throw `unknown error` when user lock ledger or didn't turn on `eth` app in ledger in MM extension. this code change provide better error message to indicate what happen.

* feat: Remove duplicate tests.

* feat: Change the error message to `Ledger Ethereum app closed. Open it to unlock.`

* feat: Change the error message to `Ledger Ethereum app closed. Open it to unlock.`
  • Loading branch information
dawnseeker8 authored Jul 12, 2024
1 parent 9496660 commit bec276b
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 7 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -76,3 +76,6 @@ node_modules/
!.yarn/releases
!.yarn/sdks
!.yarn/versions

# exclude webstorm profile file
.idea/
14 changes: 8 additions & 6 deletions src/ledger-keyring.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,14 @@ describe('LedgerKeyring', function () {
expect(keyring.hdk.publicKey).not.toBe('ABC');
});

it('throws an error when the bridge getPublicKey method throws an error and it is not an error type', async function () {
keyring.setHdPath(`m/44'/60'/0'/0`);
jest.spyOn(bridge, 'getPublicKey').mockRejectedValue('Some error');
await expect(keyring.unlock()).rejects.toThrow(
'Ledger Ethereum app closed. Open it to unlock.',
);
});

it('does not update hdk.publicKey if updateHdk is false', async function () {
// @ts-expect-error we want to bypass the publicKey property set method
keyring.hdk = { publicKey: 'ABC' };
Expand Down Expand Up @@ -366,12 +374,6 @@ describe('LedgerKeyring', function () {
.mockRejectedValue(new Error('Some error'));
await expect(keyring.unlock()).rejects.toThrow('Some error');
});

it('throws an error when the bridge getPublicKey method throws an error and it is not an error type', async function () {
keyring.setHdPath(`m/44'/60'/0'/0`);
jest.spyOn(bridge, 'getPublicKey').mockRejectedValue('Some error');
await expect(keyring.unlock()).rejects.toThrow('Unknown error');
});
});

describe('addAccounts', function () {
Expand Down
4 changes: 3 additions & 1 deletion src/ledger-keyring.ts
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,9 @@ export class LedgerKeyring extends EventEmitter {
hdPath: path,
});
} catch (error) {
throw error instanceof Error ? error : new Error('Unknown error');
throw error instanceof Error
? error
: new Error('Ledger Ethereum app closed. Open it to unlock.');
}

if (updateHdk && payload.chainCode) {
Expand Down

0 comments on commit bec276b

Please sign in to comment.