@metamask/eth-ledger-bridge-keyring
Version:
A MetaMask compatible keyring, for ledger hardware wallets
42 lines • 1.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.handleLedgerTransportError = handleLedgerTransportError;
const hw_transport_1 = require("@ledgerhq/hw-transport");
const type_1 = require("./type.cjs");
/**
* 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
*/
function handleLedgerTransportError(error, fallbackMessage) {
if (error instanceof hw_transport_1.TransportStatusError) {
const transportError = error;
throw new type_1.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.cjs.map