Add Ledger connection flow warning message for failed to connect device error (#12604)

feature/default_network_editable
Dan J Miller 3 years ago committed by ryanml
parent e740f7a436
commit 010e661f8b
  1. 3
      app/_locales/en/messages.json
  2. 16
      ui/store/actions.js

@ -1277,6 +1277,9 @@
"message": "Customize how you connect your Ledger to MetaMask. $1 is recommended, but other options are available. Read more here: $2",
"description": "A description that appears above a dropdown where users can select between up to three options - Ledger Live, U2F or WebHID - depending on what is supported in their browser. $1 is the recommended browser option, it will be either WebHID or U2f. $2 is a link to an article where users can learn more, but will be the translation of the learnMore message."
},
"ledgerDeviceOpenFailureMessage": {
"message": "The Ledger device failed to open. Your Ledger might be connected to other software. Please close Ledger Live or other applications connected to your Ledger device, and try to connect again."
},
"ledgerLive": {
"message": "Ledger Live",
"description": "The name of a desktop app that can be used with your ledger device. We can also use it to connect a users Ledger device to MetaMask."

@ -402,14 +402,14 @@ export function forgetDevice(deviceName) {
export function connectHardware(deviceName, page, hdPath, t) {
log.debug(`background.connectHardware`, deviceName, page, hdPath);
return async (dispatch, getState) => {
const { ledgerTransportType } = getState().metamask;
dispatch(
showLoadingIndication(`Looking for your ${capitalize(deviceName)}...`),
);
let accounts;
try {
const { ledgerTransportType } = getState().metamask;
if (deviceName === 'ledger') {
await promisifiedBackground.establishLedgerTransportPreference();
}
@ -435,8 +435,16 @@ export function connectHardware(deviceName, page, hdPath, t) {
);
} catch (error) {
log.error(error);
dispatch(displayWarning(error.message));
throw error;
if (
deviceName === 'ledger' &&
ledgerTransportType === LEDGER_TRANSPORT_TYPES.WEBHID &&
error.message.match('Failed to open the device')
) {
dispatch(displayWarning(t('ledgerDeviceOpenFailureMessage')));
} else {
dispatch(displayWarning(error.message));
throw error;
}
} finally {
dispatch(hideLoadingIndication());
}

Loading…
Cancel
Save