@onekeyfe/hd-core 1.2.0-alpha.148 → 1.2.0-alpha.149
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.
- package/__tests__/device-lifecycle-events.test.ts +50 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/device/Device.d.ts +3 -1
- package/dist/device/Device.d.ts.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.js +16 -6
- package/package.json +4 -4
- package/src/core/index.ts +3 -0
- package/src/device/Device.ts +20 -8
|
@@ -485,7 +485,10 @@ describe('public device lifecycle events', () => {
|
|
|
485
485
|
|
|
486
486
|
test('does not retry a BLE connection error after the user cancelled', () => {
|
|
487
487
|
const device = createInitializedDevice('V2');
|
|
488
|
-
(
|
|
488
|
+
device.beginConnectionAttempt();
|
|
489
|
+
(device as unknown as { interruptedAttempt: number }).interruptedAttempt = (
|
|
490
|
+
device as unknown as { connectionAttempt: number }
|
|
491
|
+
).connectionAttempt;
|
|
489
492
|
const method = { payload: { connectProtocol: 'V2' }, device } as never;
|
|
490
493
|
const error = {
|
|
491
494
|
errorCode: HardwareErrorCode.BleConnectedError,
|
|
@@ -495,6 +498,52 @@ describe('public device lifecycle events', () => {
|
|
|
495
498
|
expect(isRetryableBleConnectionError(method, error)).toBe(false);
|
|
496
499
|
});
|
|
497
500
|
|
|
501
|
+
test('allows a new BLE connect after the previous attempt was cancelled', async () => {
|
|
502
|
+
jest.spyOn(DataManager, 'getSettings').mockReturnValue('react-native' as never);
|
|
503
|
+
const device = createInitializedDevice('V2');
|
|
504
|
+
const disconnect = jest.fn().mockResolvedValue(undefined);
|
|
505
|
+
const acquire = jest.fn().mockResolvedValue({ uuid: 'next-session', protocolType: 'V2' });
|
|
506
|
+
device.deviceConnector = { acquire, disconnect } as never;
|
|
507
|
+
|
|
508
|
+
device.beginConnectionAttempt();
|
|
509
|
+
await device.interruptionFromUser();
|
|
510
|
+
expect(device.wasInterruptedByUser()).toBe(true);
|
|
511
|
+
|
|
512
|
+
device.beginConnectionAttempt();
|
|
513
|
+
await expect(device.acquire('V2')).resolves.toBeUndefined();
|
|
514
|
+
|
|
515
|
+
expect(device.wasInterruptedByUser()).toBe(false);
|
|
516
|
+
expect(device.hasDeviceAcquire()).toBe(true);
|
|
517
|
+
expect(acquire).toHaveBeenCalledTimes(1);
|
|
518
|
+
});
|
|
519
|
+
|
|
520
|
+
test('discards a late cancelled acquire after a newer connect attempt starts', async () => {
|
|
521
|
+
jest.spyOn(DataManager, 'getSettings').mockReturnValue('react-native' as never);
|
|
522
|
+
const device = createInitializedDevice('V2');
|
|
523
|
+
const disconnect = jest.fn().mockResolvedValue(undefined);
|
|
524
|
+
let resolveAcquire: ((value: { uuid: string; protocolType: 'V2' }) => void) | undefined;
|
|
525
|
+
const acquire = jest.fn(
|
|
526
|
+
() =>
|
|
527
|
+
new Promise<{ uuid: string; protocolType: 'V2' }>(resolve => {
|
|
528
|
+
resolveAcquire = resolve;
|
|
529
|
+
})
|
|
530
|
+
);
|
|
531
|
+
device.deviceConnector = { acquire, disconnect } as never;
|
|
532
|
+
|
|
533
|
+
device.beginConnectionAttempt();
|
|
534
|
+
const cancelledAcquire = device.acquire('V2');
|
|
535
|
+
await device.interruptionFromUser();
|
|
536
|
+
device.beginConnectionAttempt();
|
|
537
|
+
resolveAcquire?.({ uuid: 'stale-session', protocolType: 'V2' });
|
|
538
|
+
|
|
539
|
+
await expect(cancelledAcquire).rejects.toMatchObject({
|
|
540
|
+
errorCode: HardwareErrorCode.DeviceInterruptedFromUser,
|
|
541
|
+
});
|
|
542
|
+
expect(disconnect).toHaveBeenCalledWith('stale-session');
|
|
543
|
+
expect(device.hasDeviceAcquire()).toBe(false);
|
|
544
|
+
expect(device.wasInterruptedByUser()).toBe(false);
|
|
545
|
+
});
|
|
546
|
+
|
|
498
547
|
test('waits for the canceled run to finish releasing before cancellation completes', async () => {
|
|
499
548
|
jest.spyOn(DataManager, 'getSettings').mockReturnValue('react-native' as never);
|
|
500
549
|
const device = createInitializedDevice('V2');
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";AACA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAoClC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAsB1C,OAAO,eAAe,MAAM,2BAA2B,CAAC;AAYxD,OAAO,KAAK,EAAE,eAAe,EAAyB,MAAM,UAAU,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAmD,MAAM,WAAW,CAAC;AAI9F,OAAO,KAAK,EACV,6BAA6B,EAG9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAWpD,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAmE7D,eAAO,MAAM,OAAO,YAAmB,WAAW,WAAW,WAAW,iBAoFvE,CAAC;AAiqBF,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,WAWpF;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,WAW/E;AAED,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,WAQlF;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";AACA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAoClC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAsB1C,OAAO,eAAe,MAAM,2BAA2B,CAAC;AAYxD,OAAO,KAAK,EAAE,eAAe,EAAyB,MAAM,UAAU,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAmD,MAAM,WAAW,CAAC;AAI9F,OAAO,KAAK,EACV,6BAA6B,EAG9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAWpD,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAmE7D,eAAO,MAAM,OAAO,YAAmB,WAAW,WAAW,WAAW,iBAoFvE,CAAC;AAiqBF,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,WAWpF;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,WAW/E;AAED,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,WAQlF;AAsPD,eAAO,MAAM,MAAM,YAAa,WAAW,cAAc,MAAM,SAqF9D,CAAC;AAmGF,eAAO,MAAM,qBAAqB,gFAejC,CAAC;AAiLF,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,YAAY;IAC5C,OAAO,CAAC,cAAc,CAAoB;IAE1C,SAAgB,aAAa,EAAE,MAAM,CAAC;IAEtC,OAAO,CAAC,YAAY,CAAsB;IAE1C,OAAO,CAAC,cAAc,CAAC,CAAgB;IAGvC,OAAO,CAAC,sBAAsB,CAAoC;IAElE,OAAO,CAAC,iBAAiB,CAAoB;;IAS7C,OAAO,CAAC,cAAc;IA6BhB,aAAa,CAAC,OAAO,EAAE,WAAW;IAuExC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAOV,gBAAgB;CAiC/B;AAED,eAAO,MAAM,QAAQ,YAIpB,CAAC;AAEF,eAAO,MAAM,aAAa,uBAYzB,CAAC;AAMF,eAAO,MAAM,IAAI,aACL,eAAe,aACd,GAAG,WACL,6BAA6B,8BAiBvC,CAAC;AAEF,eAAO,MAAM,eAAe;SAKrB,eAAe,CAAC,KAAK,CAAC;eAChB,GAAG;;UASf,CAAC"}
|
package/dist/device/Device.d.ts
CHANGED
|
@@ -67,7 +67,8 @@ export declare class Device extends EventEmitter {
|
|
|
67
67
|
commands: DeviceCommands;
|
|
68
68
|
private cancelableAction?;
|
|
69
69
|
private deviceAcquired;
|
|
70
|
-
private
|
|
70
|
+
private connectionAttempt;
|
|
71
|
+
private interruptedAttempt;
|
|
71
72
|
private stateStore;
|
|
72
73
|
private protocolV2StateNeedsReload;
|
|
73
74
|
private protocolV2RuntimeContext?;
|
|
@@ -181,6 +182,7 @@ export declare class Device extends EventEmitter {
|
|
|
181
182
|
getFirmwareVersion(): import("../types").IVersionArray | null;
|
|
182
183
|
getBLEFirmwareVersion(): import("../types").IVersionArray | null;
|
|
183
184
|
isUsed(): boolean;
|
|
185
|
+
beginConnectionAttempt(): number;
|
|
184
186
|
wasInterruptedByUser(): boolean;
|
|
185
187
|
private throwIfInterruptedByUser;
|
|
186
188
|
private shouldSendFallbackProtocolCancel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Device.d.ts","sourceRoot":"","sources":["../../src/device/Device.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Device.d.ts","sourceRoot":"","sources":["../../src/device/Device.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -803,10 +803,12 @@ declare class Device extends EventEmitter {
|
|
|
803
803
|
*/
|
|
804
804
|
private deviceAcquired;
|
|
805
805
|
/**
|
|
806
|
-
*
|
|
807
|
-
*
|
|
806
|
+
* Connection-attempt generation. interruptionFromUser() pins the current
|
|
807
|
+
* attempt so a late acquire cannot finish, while the next public connect
|
|
808
|
+
* increments this and is allowed to proceed.
|
|
808
809
|
*/
|
|
809
|
-
private
|
|
810
|
+
private connectionAttempt;
|
|
811
|
+
private interruptedAttempt;
|
|
810
812
|
/** Canonical device-state cache; legacy Features is a compatibility projection. */
|
|
811
813
|
private stateStore;
|
|
812
814
|
/** Force the next initialization to reload DeviceInfo after reconnect or reboot. */
|
|
@@ -957,6 +959,7 @@ declare class Device extends EventEmitter {
|
|
|
957
959
|
getFirmwareVersion(): IVersionArray | null;
|
|
958
960
|
getBLEFirmwareVersion(): IVersionArray | null;
|
|
959
961
|
isUsed(): boolean;
|
|
962
|
+
beginConnectionAttempt(): number;
|
|
960
963
|
wasInterruptedByUser(): boolean;
|
|
961
964
|
private throwIfInterruptedByUser;
|
|
962
965
|
/**
|
package/dist/index.js
CHANGED
|
@@ -45130,7 +45130,8 @@ class Device extends events.exports {
|
|
|
45130
45130
|
super();
|
|
45131
45131
|
this.deviceConnector = null;
|
|
45132
45132
|
this.deviceAcquired = false;
|
|
45133
|
-
this.
|
|
45133
|
+
this.connectionAttempt = 0;
|
|
45134
|
+
this.interruptedAttempt = null;
|
|
45134
45135
|
this.stateStore = new DeviceStateStore();
|
|
45135
45136
|
this.protocolV2StateNeedsReload = false;
|
|
45136
45137
|
this.protocolV2UiInteractionCounter = 0;
|
|
@@ -45225,6 +45226,7 @@ class Device extends events.exports {
|
|
|
45225
45226
|
acquire(expectedProtocol, options) {
|
|
45226
45227
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
45227
45228
|
return __awaiter(this, void 0, void 0, function* () {
|
|
45229
|
+
const attempt = this.connectionAttempt;
|
|
45228
45230
|
this.throwIfInterruptedByUser();
|
|
45229
45231
|
const env = DataManager.getSettings('env');
|
|
45230
45232
|
const mainIdKey = DataManager.isBleConnect(env) ? 'id' : 'session';
|
|
@@ -45251,7 +45253,7 @@ class Device extends events.exports {
|
|
|
45251
45253
|
if (detectedProtocol) {
|
|
45252
45254
|
this.originalDescriptor.protocolType = detectedProtocol;
|
|
45253
45255
|
}
|
|
45254
|
-
if (this.
|
|
45256
|
+
if (this.interruptedAttempt === attempt || this.connectionAttempt !== attempt) {
|
|
45255
45257
|
const session = this.mainId;
|
|
45256
45258
|
if (session && ((_g = this.deviceConnector) === null || _g === void 0 ? void 0 : _g.disconnect)) {
|
|
45257
45259
|
yield this.deviceConnector.disconnect(session).catch(disconnectError => {
|
|
@@ -46019,7 +46021,7 @@ class Device extends events.exports {
|
|
|
46019
46021
|
yield this.interruptionFromOutside();
|
|
46020
46022
|
Log$h.debug('[Device] run error:', 'Device is running, but will cancel previous operate');
|
|
46021
46023
|
}
|
|
46022
|
-
this.
|
|
46024
|
+
this.beginConnectionAttempt();
|
|
46023
46025
|
options = parseRunOptions(options);
|
|
46024
46026
|
const runPromise = hdShared.createDeferred();
|
|
46025
46027
|
this.runPromise = runPromise;
|
|
@@ -46133,7 +46135,7 @@ class Device extends events.exports {
|
|
|
46133
46135
|
var _a, _b, _c, _d;
|
|
46134
46136
|
return __awaiter(this, void 0, void 0, function* () {
|
|
46135
46137
|
const error = hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.DeviceInterruptedFromUser);
|
|
46136
|
-
this.
|
|
46138
|
+
this.interruptedAttempt = this.connectionAttempt;
|
|
46137
46139
|
const cleanupPromise = this.runCleanupPromise;
|
|
46138
46140
|
const { cancelableAction } = this;
|
|
46139
46141
|
if (cancelableAction) {
|
|
@@ -46207,11 +46209,16 @@ class Device extends events.exports {
|
|
|
46207
46209
|
isUsed() {
|
|
46208
46210
|
return typeof this.originalDescriptor.session === 'string';
|
|
46209
46211
|
}
|
|
46212
|
+
beginConnectionAttempt() {
|
|
46213
|
+
this.connectionAttempt += 1;
|
|
46214
|
+
return this.connectionAttempt;
|
|
46215
|
+
}
|
|
46210
46216
|
wasInterruptedByUser() {
|
|
46211
|
-
return this.
|
|
46217
|
+
return (typeof this.interruptedAttempt === 'number' &&
|
|
46218
|
+
this.interruptedAttempt === this.connectionAttempt);
|
|
46212
46219
|
}
|
|
46213
46220
|
throwIfInterruptedByUser() {
|
|
46214
|
-
if (this.
|
|
46221
|
+
if (this.wasInterruptedByUser()) {
|
|
46215
46222
|
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.DeviceInterruptedFromUser);
|
|
46216
46223
|
}
|
|
46217
46224
|
}
|
|
@@ -65586,6 +65593,9 @@ function connectDeviceForBle(method, device, retryCount = 0) {
|
|
|
65586
65593
|
var _a;
|
|
65587
65594
|
return __awaiter(this, void 0, void 0, function* () {
|
|
65588
65595
|
try {
|
|
65596
|
+
if (retryCount === 0) {
|
|
65597
|
+
device.beginConnectionAttempt();
|
|
65598
|
+
}
|
|
65589
65599
|
if (device.wasInterruptedByUser()) {
|
|
65590
65600
|
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.DeviceInterruptedFromUser);
|
|
65591
65601
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onekeyfe/hd-core",
|
|
3
|
-
"version": "1.2.0-alpha.
|
|
3
|
+
"version": "1.2.0-alpha.149",
|
|
4
4
|
"description": "Core processes and APIs for communicating with OneKey hardware devices.",
|
|
5
5
|
"author": "OneKey",
|
|
6
6
|
"homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"url": "https://github.com/OneKeyHQ/hardware-js-sdk/issues"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@onekeyfe/hd-shared": "1.2.0-alpha.
|
|
29
|
-
"@onekeyfe/hd-transport": "1.2.0-alpha.
|
|
28
|
+
"@onekeyfe/hd-shared": "1.2.0-alpha.149",
|
|
29
|
+
"@onekeyfe/hd-transport": "1.2.0-alpha.149",
|
|
30
30
|
"axios": "1.15.2",
|
|
31
31
|
"bignumber.js": "^9.0.2",
|
|
32
32
|
"buffer": "^6.0.3",
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"@types/w3c-web-usb": "^1.0.10",
|
|
47
47
|
"@types/web-bluetooth": "^0.0.21"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "0c2b72c1edbafb2b738e3eb0b9ecdad8d8b92df7"
|
|
50
50
|
}
|
package/src/core/index.ts
CHANGED
|
@@ -956,6 +956,9 @@ export function isMissingDetectedProtocolV2Error(method: BaseMethod, error: unkn
|
|
|
956
956
|
*/
|
|
957
957
|
async function connectDeviceForBle(method: BaseMethod, device: Device, retryCount = 0) {
|
|
958
958
|
try {
|
|
959
|
+
if (retryCount === 0) {
|
|
960
|
+
device.beginConnectionAttempt();
|
|
961
|
+
}
|
|
959
962
|
if (device.wasInterruptedByUser()) {
|
|
960
963
|
throw ERRORS.TypedError(HardwareErrorCode.DeviceInterruptedFromUser);
|
|
961
964
|
}
|
package/src/device/Device.ts
CHANGED
|
@@ -236,10 +236,13 @@ export class Device extends EventEmitter {
|
|
|
236
236
|
private deviceAcquired = false;
|
|
237
237
|
|
|
238
238
|
/**
|
|
239
|
-
*
|
|
240
|
-
*
|
|
239
|
+
* Connection-attempt generation. interruptionFromUser() pins the current
|
|
240
|
+
* attempt so a late acquire cannot finish, while the next public connect
|
|
241
|
+
* increments this and is allowed to proceed.
|
|
241
242
|
*/
|
|
242
|
-
private
|
|
243
|
+
private connectionAttempt = 0;
|
|
244
|
+
|
|
245
|
+
private interruptedAttempt: number | null = null;
|
|
243
246
|
|
|
244
247
|
/** Canonical device-state cache; legacy Features is a compatibility projection. */
|
|
245
248
|
private stateStore = new DeviceStateStore();
|
|
@@ -435,6 +438,7 @@ export class Device extends EventEmitter {
|
|
|
435
438
|
expectedProtocol?: HardwareConnectProtocol,
|
|
436
439
|
options?: { throwOnRunPromiseError?: boolean; forceProtocolDetection?: boolean }
|
|
437
440
|
) {
|
|
441
|
+
const attempt = this.connectionAttempt;
|
|
438
442
|
this.throwIfInterruptedByUser();
|
|
439
443
|
const env = DataManager.getSettings('env');
|
|
440
444
|
const mainIdKey = DataManager.isBleConnect(env) ? 'id' : 'session';
|
|
@@ -490,7 +494,7 @@ export class Device extends EventEmitter {
|
|
|
490
494
|
if (detectedProtocol) {
|
|
491
495
|
this.originalDescriptor.protocolType = detectedProtocol;
|
|
492
496
|
}
|
|
493
|
-
if (this.
|
|
497
|
+
if (this.interruptedAttempt === attempt || this.connectionAttempt !== attempt) {
|
|
494
498
|
const session = this.mainId;
|
|
495
499
|
if (session && this.deviceConnector?.disconnect) {
|
|
496
500
|
await this.deviceConnector.disconnect(session).catch(disconnectError => {
|
|
@@ -1462,7 +1466,7 @@ export class Device extends EventEmitter {
|
|
|
1462
1466
|
Log.debug('[Device] run error:', 'Device is running, but will cancel previous operate');
|
|
1463
1467
|
}
|
|
1464
1468
|
|
|
1465
|
-
this.
|
|
1469
|
+
this.beginConnectionAttempt();
|
|
1466
1470
|
options = parseRunOptions(options);
|
|
1467
1471
|
|
|
1468
1472
|
const runPromise = createDeferred<void>();
|
|
@@ -1592,7 +1596,7 @@ export class Device extends EventEmitter {
|
|
|
1592
1596
|
|
|
1593
1597
|
async interruptionFromUser() {
|
|
1594
1598
|
const error = ERRORS.TypedError(HardwareErrorCode.DeviceInterruptedFromUser);
|
|
1595
|
-
this.
|
|
1599
|
+
this.interruptedAttempt = this.connectionAttempt;
|
|
1596
1600
|
const cleanupPromise = this.runCleanupPromise;
|
|
1597
1601
|
const { cancelableAction } = this;
|
|
1598
1602
|
if (cancelableAction) {
|
|
@@ -1673,12 +1677,20 @@ export class Device extends EventEmitter {
|
|
|
1673
1677
|
return typeof this.originalDescriptor.session === 'string';
|
|
1674
1678
|
}
|
|
1675
1679
|
|
|
1680
|
+
beginConnectionAttempt() {
|
|
1681
|
+
this.connectionAttempt += 1;
|
|
1682
|
+
return this.connectionAttempt;
|
|
1683
|
+
}
|
|
1684
|
+
|
|
1676
1685
|
wasInterruptedByUser() {
|
|
1677
|
-
return
|
|
1686
|
+
return (
|
|
1687
|
+
typeof this.interruptedAttempt === 'number' &&
|
|
1688
|
+
this.interruptedAttempt === this.connectionAttempt
|
|
1689
|
+
);
|
|
1678
1690
|
}
|
|
1679
1691
|
|
|
1680
1692
|
private throwIfInterruptedByUser() {
|
|
1681
|
-
if (this.
|
|
1693
|
+
if (this.wasInterruptedByUser()) {
|
|
1682
1694
|
throw ERRORS.TypedError(HardwareErrorCode.DeviceInterruptedFromUser);
|
|
1683
1695
|
}
|
|
1684
1696
|
}
|