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