UNPKG

872 BPlain TextView Raw
1import { ledgerUSBVendorId } from "@ledgerhq/devices";
2
3const ledgerDevices = [
4 {
5 vendorId: ledgerUSBVendorId,
6 },
7];
8
9export async function requestLedgerDevice(): Promise<USBDevice> {
10 const device = await navigator.usb.requestDevice({
11 filters: ledgerDevices,
12 });
13 return device;
14}
15
16export async function getLedgerDevices(): Promise<USBDevice[]> {
17 const devices = await navigator.usb.getDevices();
18 return devices.filter((d) => d.vendorId === ledgerUSBVendorId);
19}
20
21export async function getFirstLedgerDevice(): Promise<USBDevice> {
22 const existingDevices = await getLedgerDevices();
23 if (existingDevices.length > 0) return existingDevices[0];
24 return requestLedgerDevice();
25}
26
27export const isSupported = (): Promise<boolean> =>
28 Promise.resolve(
29 !!navigator &&
30 !!navigator.usb &&
31 typeof navigator.usb.getDevices === "function"
32 );