Adjust Ledger lookups via hash/apps only (#5618)

* Adjust Ledger lookups via hash/apps only

* Lookup on all genesis hashes

* Lookup against all hashes

* Adjust ledger lookups
This commit is contained in:
Jaco 2021-06-29 17:23:00 +03:00 committed by GitHub
parent 8c33c602e8
commit 7c84bccbb9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -7,7 +7,7 @@ import type { LedgerTypes } from '@polkadot/hw-ledger/types';
import { useCallback, useMemo } from 'react';
import { Ledger } from '@polkadot/hw-ledger';
import networks from '@polkadot/networks';
import { knownGenesis, knownLedger } from '@polkadot/networks/defaults';
import uiSettings from '@polkadot/ui-settings';
import { assert } from '@polkadot/util';
@ -28,7 +28,10 @@ const EMPTY_STATE: StateBase = {
};
const hasWebUsb = !!(window as unknown as { USB?: unknown }).USB;
const ledgerChains = networks.filter((n) => !!n.hasLedgerSupport);
const ledgerChains = Object
.keys(knownGenesis)
.filter((n) => knownLedger[n]);
const ledgerHashes = ledgerChains.reduce<string[]>((all, n) => [...all, ...knownGenesis[n]], []);
let ledger: Ledger | null = null;
let ledgerType: LedgerTypes | null = null;
@ -37,11 +40,11 @@ function retrieveLedger (api: ApiPromise): Ledger {
if (!ledger || ledgerType !== currType) {
const genesisHex = api.genesisHash.toHex();
const def = ledgerChains.find(({ genesisHash }) => genesisHash[0] === genesisHex);
const network = ledgerChains.find((network) => knownGenesis[network].includes(genesisHex));
assert(def, `Unable to find supported chain for ${genesisHex}`);
assert(network, `Unable to find a known Ledger config for genesisHash ${genesisHex}`);
ledger = new Ledger(currType, def.network);
ledger = new Ledger(currType, network);
ledgerType = currType;
}
@ -49,7 +52,7 @@ function retrieveLedger (api: ApiPromise): Ledger {
}
function getState (api: ApiPromise): StateBase {
const isLedgerCapable = hasWebUsb && ledgerChains.map(({ genesisHash }) => genesisHash[0]).includes(api.genesisHash.toHex());
const isLedgerCapable = hasWebUsb && ledgerHashes.includes(api.genesisHash.toHex());
return {
isLedgerCapable,