1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00

Ensure proper transport type is set before attempting to connect ledger wallet (#12594)

* Ensure proper transport type is set before attempting to connect ledger wallet

* Fix unit tests
This commit is contained in:
Dan J Miller 2021-11-05 13:43:29 -02:30 committed by GitHub
parent c0f0e1cfc4
commit e6ae6e09b8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 0 deletions

View File

@ -849,6 +849,10 @@ export default class MetamaskController extends EventEmitter {
this.attemptLedgerTransportCreation, this.attemptLedgerTransportCreation,
this, this,
), ),
establishLedgerTransportPreference: nodeify(
this.establishLedgerTransportPreference,
this,
),
// mobile // mobile
fetchInfoToSync: nodeify(this.fetchInfoToSync, this), fetchInfoToSync: nodeify(this.fetchInfoToSync, this),
@ -1252,6 +1256,7 @@ export default class MetamaskController extends EventEmitter {
this.preferencesController.setAddresses(addresses); this.preferencesController.setAddresses(addresses);
this.selectFirstIdentity(); this.selectFirstIdentity();
} }
return vault; return vault;
} finally { } finally {
releaseLock(); releaseLock();
@ -1565,6 +1570,11 @@ export default class MetamaskController extends EventEmitter {
return await keyring.attemptMakeApp(); return await keyring.attemptMakeApp();
} }
async establishLedgerTransportPreference() {
const transportPreference = this.preferencesController.getLedgerTransportPreference();
return await this.setLedgerTransportPreference(transportPreference);
}
/** /**
* Fetch account list from a trezor device. * Fetch account list from a trezor device.
* *

View File

@ -409,6 +409,10 @@ export function connectHardware(deviceName, page, hdPath, t) {
let accounts; let accounts;
try { try {
const { ledgerTransportType } = getState().metamask; const { ledgerTransportType } = getState().metamask;
if (deviceName === 'ledger') {
await promisifiedBackground.establishLedgerTransportPreference();
}
if ( if (
deviceName === 'ledger' && deviceName === 'ledger' &&
ledgerTransportType === LEDGER_TRANSPORT_TYPES.WEBHID ledgerTransportType === LEDGER_TRANSPORT_TYPES.WEBHID

View File

@ -548,6 +548,8 @@ describe('Actions', () => {
(_, __, ___, cb) => cb(), (_, __, ___, cb) => cb(),
); );
background.establishLedgerTransportPreference.callsFake((cb) => cb());
actions._setBackgroundConnection(background); actions._setBackgroundConnection(background);
await store.dispatch( await store.dispatch(
@ -563,6 +565,8 @@ describe('Actions', () => {
cb(new Error('error')), cb(new Error('error')),
); );
background.establishLedgerTransportPreference.callsFake((cb) => cb());
actions._setBackgroundConnection(background); actions._setBackgroundConnection(background);
const expectedActions = [ const expectedActions = [