UNPKG

@metamask/eth-ledger-bridge-keyring

Version:

A MetaMask compatible keyring, for ledger hardware wallets

39 lines 1.59 kB
import { TransportStatusError } from "@ledgerhq/hw-transport"; import { LedgerStatusError } from "./type.mjs"; /** * Central error handler for Ledger TransportStatusError instances. * Converts common Ledger transport errors into user-friendly error messages. * * @param error - The error to handle * @param fallbackMessage - Default error message if no specific handling is found * @throws Error with appropriate user-friendly message */ export function handleLedgerTransportError(error, fallbackMessage) { if (error instanceof TransportStatusError) { const transportError = error; throw new LedgerStatusError(transportError.statusCode, getTransportErrorMessageFrom(transportError)); } // For any other error (TransportStatusError not matching patterns or other errors) throw error instanceof Error ? error : new Error(fallbackMessage); } /** * Get the transport error message from the transport error. * * @param transportError - The transport error * @returns The transport error message */ function getTransportErrorMessageFrom(transportError) { switch (transportError.statusCode) { case 0x6985: return 'Ledger: User rejected the transaction'; case 0x6a80: return 'Ledger: Blind signing must be enabled'; case 0x5515: return 'Ledger: Device is locked. Unlock it to continue'; case 0x650f: return 'Ledger: Ethereum app closed. Open it to unlock'; default: return transportError.message; } } //# sourceMappingURL=ledger-error-handler.mjs.map