]> git.codecow.com Git - libnemo.git/commitdiff
Add HID event listeners.
authorChris Duncan <chris@zoso.dev>
Mon, 15 Sep 2025 14:23:23 +0000 (07:23 -0700)
committerChris Duncan <chris@zoso.dev>
Mon, 15 Sep 2025 14:23:23 +0000 (07:23 -0700)
src/lib/wallet/ledger.ts

index 042bc1e2a3f0288647c8baec29cd60c350514ede..dbe4e3539b73e81333db10e5a2fbe1f1150b3c73 100644 (file)
@@ -348,10 +348,31 @@ export class Ledger {
                return new Promise(r => setTimeout(r, 1000, { status: Ledger.#STATUS_CODES[response] }))
        }
 
+       static #onConnectHid = async (e: HIDConnectionEvent): Promise<void> => {
+               console.log(e)
+               if (e.device?.vendorId === ledgerUSBVendorId) {
+                       console.log('Ledger connected via HID')
+                       const { hid } = globalThis.navigator
+                       hid.addEventListener('disconnect', this.#onDisconnectHid)
+                       hid.removeEventListener('connect', this.#onConnectHid)
+               }
+       }
+
+       static #onDisconnectHid = async (e: HIDConnectionEvent): Promise<void> => {
+               console.log(e)
+               if (e.device?.vendorId === ledgerUSBVendorId) {
+                       console.log('Ledger disconnected via HID')
+                       const { hid } = globalThis.navigator
+                       hid.addEventListener('connect', this.#onConnectHid)
+                       hid.removeEventListener('disconnect', this.#onDisconnectHid)
+                       this.#status = 'DISCONNECTED'
+               }
+       }
+
        static #onConnectUsb = async (e: USBConnectionEvent): Promise<void> => {
                console.log(e)
                if (e.device?.vendorId === ledgerUSBVendorId) {
-                       console.log('Ledger connected')
+                       console.log('Ledger connected via USB')
                        const { usb } = globalThis.navigator
                        usb.addEventListener('disconnect', this.#onDisconnectUsb)
                        usb.removeEventListener('connect', this.#onConnectUsb)
@@ -361,7 +382,7 @@ export class Ledger {
        static #onDisconnectUsb = async (e: USBConnectionEvent): Promise<void> => {
                console.log(e)
                if (e.device?.vendorId === ledgerUSBVendorId) {
-                       console.log('Ledger disconnected')
+                       console.log('Ledger disconnected via USB')
                        const { usb } = globalThis.navigator
                        usb.addEventListener('connect', this.#onConnectUsb)
                        usb.removeEventListener('disconnect', this.#onDisconnectUsb)