Skip to content

Commit eceab81

Browse files
authored
fix: ignore UI request with web-usb in desktop (#618)
* fix: fix UI request with web-usb * fix: fix UI request with web-usb * fix: remove skipWebDevicePrompt * chore: 1.1.19-alpha.6 * fix: add method.payload?.skipWebDevicePrompt
1 parent 6928480 commit eceab81

File tree

20 files changed

+68
-69
lines changed

20 files changed

+68
-69
lines changed

packages/connect-examples/electron-example/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "hardware-example",
33
"productName": "HardwareExample",
44
"executableName": "onekey-hardware-example",
5-
"version": "1.1.19-alpha.4",
5+
"version": "1.1.19-alpha.6",
66
"author": "OneKey",
77
"description": "End-to-end encrypted workspaces for teams",
88
"main": "dist/index.js",
@@ -22,7 +22,7 @@
2222
"ts:check": "yarn tsc --noEmit"
2323
},
2424
"dependencies": {
25-
"@onekeyfe/hd-transport-electron": "1.1.19-alpha.4",
25+
"@onekeyfe/hd-transport-electron": "1.1.19-alpha.6",
2626
"@stoprocent/noble": "2.3.4",
2727
"debug": "4.3.4",
2828
"electron-is-dev": "^3.0.1",

packages/connect-examples/expo-example/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "expo-example",
3-
"version": "1.1.19-alpha.4",
3+
"version": "1.1.19-alpha.6",
44
"scripts": {
55
"start": "cross-env CONNECT_SRC=https://localhost:8087/ yarn expo start --dev-client",
66
"android": "yarn expo run:android",
@@ -19,10 +19,10 @@
1919
"@noble/ed25519": "^2.1.0",
2020
"@noble/hashes": "^1.3.3",
2121
"@noble/secp256k1": "^1.7.1",
22-
"@onekeyfe/hd-ble-sdk": "1.1.19-alpha.4",
23-
"@onekeyfe/hd-common-connect-sdk": "1.1.19-alpha.4",
24-
"@onekeyfe/hd-core": "1.1.19-alpha.4",
25-
"@onekeyfe/hd-web-sdk": "1.1.19-alpha.4",
22+
"@onekeyfe/hd-ble-sdk": "1.1.19-alpha.6",
23+
"@onekeyfe/hd-common-connect-sdk": "1.1.19-alpha.6",
24+
"@onekeyfe/hd-core": "1.1.19-alpha.6",
25+
"@onekeyfe/hd-web-sdk": "1.1.19-alpha.6",
2626
"@onekeyfe/react-native-ble-utils": "^0.1.3",
2727
"@polkadot/util-crypto": "13.1.1",
2828
"@react-native-async-storage/async-storage": "1.21.0",

packages/connect-examples/expo-playground/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "onekey-hardware-playground",
3-
"version": "1.1.19-alpha.4",
3+
"version": "1.1.19-alpha.6",
44
"private": true,
55
"sideEffects": [
66
"app/utils/shim.js",
@@ -17,9 +17,9 @@
1717
},
1818
"dependencies": {
1919
"@noble/hashes": "^1.8.0",
20-
"@onekeyfe/hd-common-connect-sdk": "1.1.19-alpha.4",
21-
"@onekeyfe/hd-core": "1.1.19-alpha.4",
22-
"@onekeyfe/hd-shared": "1.1.19-alpha.4",
20+
"@onekeyfe/hd-common-connect-sdk": "1.1.19-alpha.6",
21+
"@onekeyfe/hd-core": "1.1.19-alpha.6",
22+
"@onekeyfe/hd-shared": "1.1.19-alpha.6",
2323
"@radix-ui/react-checkbox": "^1.3.2",
2424
"@radix-ui/react-dialog": "^1.1.14",
2525
"@radix-ui/react-dropdown-menu": "^2.1.15",

packages/core/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@onekeyfe/hd-core",
3-
"version": "1.1.19-alpha.4",
3+
"version": "1.1.19-alpha.6",
44
"description": "Core processes and APIs for communicating with OneKey hardware devices.",
55
"author": "OneKey",
66
"homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
@@ -25,8 +25,8 @@
2525
"url": "https://github.com/OneKeyHQ/hardware-js-sdk/issues"
2626
},
2727
"dependencies": {
28-
"@onekeyfe/hd-shared": "1.1.19-alpha.4",
29-
"@onekeyfe/hd-transport": "1.1.19-alpha.4",
28+
"@onekeyfe/hd-shared": "1.1.19-alpha.6",
29+
"@onekeyfe/hd-transport": "1.1.19-alpha.6",
3030
"axios": "1.12.2",
3131
"bignumber.js": "^9.0.2",
3232
"bytebuffer": "^5.0.1",

packages/core/src/api/FirmwareUpdateV2.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -147,11 +147,8 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
147147
await wait(3000);
148148
}
149149

150-
if (
151-
checkCount > 4 &&
152-
DataManager.isWebUsbConnect(DataManager.getSettings('env')) &&
153-
!this.payload.skipWebDevicePrompt
154-
) {
150+
// Browser WebUSB needs device selection prompt, desktop WebUSB doesn't
151+
if (checkCount > 4 && DataManager.isBrowserWebUsb(DataManager.getSettings('env'))) {
155152
clearInterval(intervalTimer);
156153
clearTimeout(timeoutTimer);
157154

packages/core/src/api/firmware/FirmwareUpdateBaseMethod.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -137,11 +137,8 @@ export class FirmwareUpdateBaseMethod<Params> extends BaseMethod<Params> {
137137
await wait(3000);
138138
}
139139

140-
if (
141-
checkCount > 4 &&
142-
DataManager.isWebUsbConnect(DataManager.getSettings('env')) &&
143-
!this.payload.skipWebDevicePrompt
144-
) {
140+
// Browser WebUSB needs device selection prompt, desktop WebUSB doesn't
141+
if (checkCount > 4 && DataManager.isBrowserWebUsb(DataManager.getSettings('env'))) {
145142
clearInterval(intervalTimer);
146143
clearTimeout(timeoutTimer);
147144

packages/core/src/core/index.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -643,7 +643,8 @@ function initDevice(method: BaseMethod) {
643643

644644
if (!device) {
645645
const env = DataManager.getSettings('env');
646-
if (DataManager.isWebUsbConnect(env)) {
646+
// Browser WebUSB needs permission prompt, desktop WebUSB doesn't
647+
if (DataManager.isBrowserWebUsb(env)) {
647648
throw ERRORS.TypedError(HardwareErrorCode.WebDeviceNotFoundOrNeedsPermission);
648649
}
649650
throw ERRORS.TypedError(HardwareErrorCode.DeviceNotFound);
@@ -839,11 +840,10 @@ const ensureConnected = async (
839840
clearTimeout(timer);
840841
}
841842
Log.debug('EnsureConnected get to max try count, will return: ', tryCount);
842-
// WebUSB scenario: after all retries failed, send permission prompt and return error
843-
if (DataManager.isWebUsbConnect(env)) {
844-
if (!method.payload?.skipWebDevicePrompt) {
845-
postMessage(createUiMessage(UI_REQUEST.WEB_DEVICE_PROMPT_ACCESS_PERMISSION));
846-
}
843+
// Browser WebUSB needs permission prompt, desktop WebUSB doesn't
844+
// skipWebDevicePrompt can override this behavior for special cases
845+
if (DataManager.isBrowserWebUsb(env) && !method.payload?.skipWebDevicePrompt) {
846+
postMessage(createUiMessage(UI_REQUEST.WEB_DEVICE_PROMPT_ACCESS_PERMISSION));
847847
reject(ERRORS.TypedError(HardwareErrorCode.WebDeviceNotFoundOrNeedsPermission));
848848
} else {
849849
reject(ERRORS.TypedError(HardwareErrorCode.DeviceNotFound));

packages/core/src/data-manager/DataManager.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -455,5 +455,9 @@ export default class DataManager {
455455
static isBleConnect = (env: ConnectSettings['env']) =>
456456
env === 'react-native' || env === 'lowlevel' || env === 'desktop-web-ble';
457457

458-
static isWebUsbConnect = (env: ConnectSettings['env']) => env === 'webusb';
458+
/** Desktop WebUSB doesn't need browser permission prompt */
459+
static isDesktopWebUsb = (env: ConnectSettings['env']) => env === 'desktop-webusb';
460+
461+
/** Browser WebUSB needs permission prompt */
462+
static isBrowserWebUsb = (env: ConnectSettings['env']) => env === 'webusb';
459463
}

packages/core/src/types/settings.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export type transportEnv =
88
| 'electron'
99
| 'react-native'
1010
| 'webusb'
11+
| 'desktop-webusb'
1112
| 'desktop-web-ble'
1213
| 'emulator'
1314
| 'lowlevel';

packages/hd-ble-sdk/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@onekeyfe/hd-ble-sdk",
3-
"version": "1.1.19-alpha.4",
3+
"version": "1.1.19-alpha.6",
44
"author": "OneKey",
55
"homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
66
"license": "ISC",
@@ -20,8 +20,8 @@
2020
"lint:fix": "eslint . --fix"
2121
},
2222
"dependencies": {
23-
"@onekeyfe/hd-core": "1.1.19-alpha.4",
24-
"@onekeyfe/hd-shared": "1.1.19-alpha.4",
25-
"@onekeyfe/hd-transport-react-native": "1.1.19-alpha.4"
23+
"@onekeyfe/hd-core": "1.1.19-alpha.6",
24+
"@onekeyfe/hd-shared": "1.1.19-alpha.6",
25+
"@onekeyfe/hd-transport-react-native": "1.1.19-alpha.6"
2626
}
2727
}

0 commit comments

Comments
 (0)