@onekeyfe/hd-transport-web-device 1.2.0-alpha.64 → 1.2.0-alpha.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -506,6 +506,53 @@ describe('ElectronBleTransport protocol detection', () => {
|
|
|
506
506
|
}
|
|
507
507
|
});
|
|
508
508
|
|
|
509
|
+
test('ignores a delayed disconnect event from the previous BLE connection', async () => {
|
|
510
|
+
const device = { id: 'delayed-disconnect-pro2-id', name: 'OneKey Pro 2' };
|
|
511
|
+
const nobleBle = createNobleBle(device);
|
|
512
|
+
let notificationHandler: ((deviceId: string, data: string) => void) | undefined;
|
|
513
|
+
const disconnectHandlers: Array<
|
|
514
|
+
(disconnectedDevice: { id: string; name: string | null }) => void
|
|
515
|
+
> = [];
|
|
516
|
+
nobleBle.onNotification.mockImplementation(handler => {
|
|
517
|
+
notificationHandler = handler;
|
|
518
|
+
return jest.fn();
|
|
519
|
+
});
|
|
520
|
+
nobleBle.onDeviceDisconnected.mockImplementation(handler => {
|
|
521
|
+
disconnectHandlers.push(handler);
|
|
522
|
+
return jest.fn();
|
|
523
|
+
});
|
|
524
|
+
let responseSeq = 0;
|
|
525
|
+
nobleBle.write.mockImplementation(() => {
|
|
526
|
+
responseSeq += 1;
|
|
527
|
+
const response = ProtocolV2.encodeFrame(
|
|
528
|
+
schemas,
|
|
529
|
+
'Success',
|
|
530
|
+
{ message: 'ok' },
|
|
531
|
+
{ router: PROTOCOL_V2_CHANNEL_BLE_UART, seq: responseSeq }
|
|
532
|
+
);
|
|
533
|
+
setTimeout(() => notificationHandler?.(device.id, bytesToHex(response)), 0);
|
|
534
|
+
return Promise.resolve();
|
|
535
|
+
});
|
|
536
|
+
const bleTransport = configureTransport(nobleBle);
|
|
537
|
+
|
|
538
|
+
try {
|
|
539
|
+
await bleTransport.acquire({ uuid: device.id, expectedProtocol: 'V2' });
|
|
540
|
+
await bleTransport.acquire({ uuid: device.id, expectedProtocol: 'V2' });
|
|
541
|
+
|
|
542
|
+
disconnectHandlers[0]?.(device);
|
|
543
|
+
|
|
544
|
+
expect(bleTransport.getProtocolType(device.id)).toBe('V2');
|
|
545
|
+
await expect(
|
|
546
|
+
bleTransport.call(device.id, 'Ping', { message: 'after-stale-disconnect' })
|
|
547
|
+
).resolves.toEqual({
|
|
548
|
+
type: 'Success',
|
|
549
|
+
message: { message: 'ok' },
|
|
550
|
+
});
|
|
551
|
+
} finally {
|
|
552
|
+
await bleTransport.release(device.id);
|
|
553
|
+
}
|
|
554
|
+
});
|
|
555
|
+
|
|
509
556
|
test('preserves the active Protocol V2 link when the same schema is configured again', async () => {
|
|
510
557
|
const device = { id: 'stable-schema-pro2-id', name: 'OneKey Pro 2' };
|
|
511
558
|
const nobleBle = createNobleBle(device);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"electron-ble-transport.d.ts","sourceRoot":"","sources":["../src/electron-ble-transport.ts"],"names":[],"mappings":";AAsBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EAEZ,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,YAAY,MAAM,QAAQ,CAAC;AAIvC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB;CACF;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,gBAAgB,CAAC,EAAE,YAAY,CAAC;IAChC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAoCF,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACvC,OAAO,CAAC,SAAS,CAA0D;IAE3E,OAAO,CAAC,WAAW,CAA0D;IAE7E,OAAO,CAAC,6BAA6B,CAAqB;IAE1D,IAAI,SAA0B;IAE9B,UAAU,UAAS;IAEnB,UAAU,EAAE,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,IAAI,CAAQ;IAExD,OAAO,CAAC,kBAAkB,CAAuB;IAEjD,GAAG,CAAC,EAAE,GAAG,CAAC;IAEV,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,OAAO,CAAC,gBAAgB,CAA0B;IAElD,OAAO,CAAC,cAAc,CAAwC;IAE9D,OAAO,CAAC,mBAAmB,CAAwC;IAEnE,OAAO,CAAC,SAAS,CAAsE;IAEvF,OAAO,CAAC,YAAY,CAAoD;IAExE,OAAO,CAAC,aAAa,CAAwC;IAE7D,OAAO,CAAC,eAAe,CAAgD;IAEvE,OAAO,CAAC,eAAe,CAmBpB;IAEH,OAAO,CAAC,oBAAoB,CAAsC;IAElE,OAAO,CAAC,kBAAkB,CAAsC;IAEhE,OAAO,CAAC,kBAAkB,CAAkC;IAE5D,OAAO,CAAC,qBAAqB,CAAK;IAElC,OAAO,CAAC,oBAAoB;IA+B5B,OAAO,CAAC,kBAAkB;IA+B1B,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,YAAY;IAcxC,SAAS,CAAC,UAAU,EAAE,GAAG;IAKzB,mBAAmB,CAAC,UAAU,EAAE,GAAG;IAgB7B,MAAM;IAIN,SAAS,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAqBxC,OAAO,CAAC,KAAK,EAAE,eAAe;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"electron-ble-transport.d.ts","sourceRoot":"","sources":["../src/electron-ble-transport.ts"],"names":[],"mappings":";AAsBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EAEZ,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,YAAY,MAAM,QAAQ,CAAC;AAIvC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB;CACF;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,gBAAgB,CAAC,EAAE,YAAY,CAAC;IAChC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAoCF,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACvC,OAAO,CAAC,SAAS,CAA0D;IAE3E,OAAO,CAAC,WAAW,CAA0D;IAE7E,OAAO,CAAC,6BAA6B,CAAqB;IAE1D,IAAI,SAA0B;IAE9B,UAAU,UAAS;IAEnB,UAAU,EAAE,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,IAAI,CAAQ;IAExD,OAAO,CAAC,kBAAkB,CAAuB;IAEjD,GAAG,CAAC,EAAE,GAAG,CAAC;IAEV,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,OAAO,CAAC,gBAAgB,CAA0B;IAElD,OAAO,CAAC,cAAc,CAAwC;IAE9D,OAAO,CAAC,mBAAmB,CAAwC;IAEnE,OAAO,CAAC,SAAS,CAAsE;IAEvF,OAAO,CAAC,YAAY,CAAoD;IAExE,OAAO,CAAC,aAAa,CAAwC;IAE7D,OAAO,CAAC,eAAe,CAAgD;IAEvE,OAAO,CAAC,eAAe,CAmBpB;IAEH,OAAO,CAAC,oBAAoB,CAAsC;IAElE,OAAO,CAAC,kBAAkB,CAAsC;IAEhE,OAAO,CAAC,kBAAkB,CAAkC;IAE5D,OAAO,CAAC,qBAAqB,CAAK;IAElC,OAAO,CAAC,oBAAoB;IA+B5B,OAAO,CAAC,kBAAkB;IA+B1B,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,YAAY;IAcxC,SAAS,CAAC,UAAU,EAAE,GAAG;IAKzB,mBAAmB,CAAC,UAAU,EAAE,GAAG;IAgB7B,MAAM;IAIN,SAAS,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAqBxC,OAAO,CAAC,KAAK,EAAE,eAAe;;;;;;;;;;;IA0F9B,OAAO,CAAC,EAAE,EAAE,MAAM;YAUV,aAAa;IAe3B,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,kBAAkB;YAMZ,cAAc;IA+C5B,OAAO,CAAC,8BAA8B;YAgBxB,iCAAiC;YA8CjC,eAAe;YAkBf,eAAe;YAuBf,SAAS;IASvB,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,4BAA4B;IAkBpC,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,sBAAsB;YAShB,mBAAmB;IAiBjC,OAAO,CAAC,4BAA4B;IAqB9B,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE,oBAAoB;YA2BlB,cAAc;YAqFd,cAAc;IA0B5B,OAAO,CAAC,uBAAuB;IAyC/B,OAAO,CAAC,6BAA6B;IAsCrC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;CAGxD"}
|
package/dist/index.js
CHANGED
|
@@ -926,10 +926,12 @@ class ElectronBleTransport {
|
|
|
926
926
|
yield window.desktopApi.nobleBle.subscribe(uuid);
|
|
927
927
|
const cleanup = this.createNotificationSubscription(uuid);
|
|
928
928
|
this.notificationCleanups.set(uuid, cleanup);
|
|
929
|
+
const connectionToken = this.notificationTokens.get(uuid);
|
|
929
930
|
const protocolType = yield this.detectProtocol(uuid, expectedProtocol, protocolHint);
|
|
930
931
|
const disconnectCleanup = window.desktopApi.nobleBle.onDeviceDisconnected((disconnectedDevice) => {
|
|
931
932
|
var _a;
|
|
932
|
-
if (disconnectedDevice.id === uuid
|
|
933
|
+
if (disconnectedDevice.id === uuid &&
|
|
934
|
+
this.notificationTokens.get(uuid) === connectionToken) {
|
|
933
935
|
this.cleanupDeviceState(uuid);
|
|
934
936
|
(_a = this.emitter) === null || _a === void 0 ? void 0 : _a.emit(transport.TRANSPORT_EVENT.DEVICE_DISCONNECT, {
|
|
935
937
|
name: disconnectedDevice.name,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onekeyfe/hd-transport-web-device",
|
|
3
|
-
"version": "1.2.0-alpha.
|
|
3
|
+
"version": "1.2.0-alpha.66",
|
|
4
4
|
"author": "OneKey",
|
|
5
5
|
"homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
|
|
6
6
|
"license": "MIT",
|
|
@@ -21,13 +21,13 @@
|
|
|
21
21
|
"lint:fix": "eslint . --fix"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@onekeyfe/hd-shared": "1.2.0-alpha.
|
|
25
|
-
"@onekeyfe/hd-transport": "1.2.0-alpha.
|
|
24
|
+
"@onekeyfe/hd-shared": "1.2.0-alpha.66",
|
|
25
|
+
"@onekeyfe/hd-transport": "1.2.0-alpha.66"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@onekeyfe/hd-transport-electron": "1.2.0-alpha.
|
|
28
|
+
"@onekeyfe/hd-transport-electron": "1.2.0-alpha.66",
|
|
29
29
|
"@types/w3c-web-usb": "^1.0.6",
|
|
30
30
|
"@types/web-bluetooth": "^0.0.17"
|
|
31
31
|
},
|
|
32
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "81629c086665bb92ce4d52087ae47f084976da79"
|
|
33
33
|
}
|
|
@@ -313,12 +313,16 @@ export default class ElectronBleTransport {
|
|
|
313
313
|
|
|
314
314
|
const cleanup = this.createNotificationSubscription(uuid);
|
|
315
315
|
this.notificationCleanups.set(uuid, cleanup);
|
|
316
|
+
const connectionToken = this.notificationTokens.get(uuid);
|
|
316
317
|
|
|
317
318
|
const protocolType = await this.detectProtocol(uuid, expectedProtocol, protocolHint);
|
|
318
319
|
|
|
319
320
|
const disconnectCleanup = window.desktopApi.nobleBle.onDeviceDisconnected(
|
|
320
321
|
(disconnectedDevice: any) => {
|
|
321
|
-
if (
|
|
322
|
+
if (
|
|
323
|
+
disconnectedDevice.id === uuid &&
|
|
324
|
+
this.notificationTokens.get(uuid) === connectionToken
|
|
325
|
+
) {
|
|
322
326
|
this.cleanupDeviceState(uuid);
|
|
323
327
|
this.emitter?.emit(TRANSPORT_EVENT.DEVICE_DISCONNECT, {
|
|
324
328
|
name: disconnectedDevice.name,
|