diff --git a/packages/connect-examples/electron-example/package.json b/packages/connect-examples/electron-example/package.json index 7a8d32c1f..f4c0de6df 100644 --- a/packages/connect-examples/electron-example/package.json +++ b/packages/connect-examples/electron-example/package.json @@ -2,7 +2,7 @@ "name": "hardware-example", "productName": "HardwareExample", "executableName": "onekey-hardware-example", - "version": "1.1.20-alpha.2", + "version": "1.1.20", "author": "OneKey", "description": "End-to-end encrypted workspaces for teams", "main": "dist/index.js", @@ -22,7 +22,7 @@ "ts:check": "yarn tsc --noEmit" }, "dependencies": { - "@onekeyfe/hd-transport-electron": "1.1.20-alpha.2", + "@onekeyfe/hd-transport-electron": "1.1.20", "@stoprocent/noble": "2.3.4", "debug": "4.3.4", "electron-is-dev": "^3.0.1", diff --git a/packages/connect-examples/expo-example/package.json b/packages/connect-examples/expo-example/package.json index 0ad682fae..5bc747ea3 100644 --- a/packages/connect-examples/expo-example/package.json +++ b/packages/connect-examples/expo-example/package.json @@ -1,6 +1,6 @@ { "name": "expo-example", - "version": "1.1.20-alpha.2", + "version": "1.1.20", "scripts": { "start": "cross-env CONNECT_SRC=https://localhost:8087/ yarn expo start --dev-client", "android": "yarn expo run:android", @@ -19,10 +19,10 @@ "@noble/ed25519": "^2.1.0", "@noble/hashes": "^1.3.3", "@noble/secp256k1": "^1.7.1", - "@onekeyfe/hd-ble-sdk": "1.1.20-alpha.2", - "@onekeyfe/hd-common-connect-sdk": "1.1.20-alpha.2", - "@onekeyfe/hd-core": "1.1.20-alpha.2", - "@onekeyfe/hd-web-sdk": "1.1.20-alpha.2", + "@onekeyfe/hd-ble-sdk": "1.1.20", + "@onekeyfe/hd-common-connect-sdk": "1.1.20", + "@onekeyfe/hd-core": "1.1.20", + "@onekeyfe/hd-web-sdk": "1.1.20", "@onekeyfe/react-native-ble-utils": "^0.1.3", "@polkadot/util-crypto": "13.1.1", "@react-native-async-storage/async-storage": "1.21.0", diff --git a/packages/connect-examples/expo-playground/package.json b/packages/connect-examples/expo-playground/package.json index 1c81f6be4..227e0e450 100644 --- a/packages/connect-examples/expo-playground/package.json +++ b/packages/connect-examples/expo-playground/package.json @@ -1,6 +1,6 @@ { "name": "onekey-hardware-playground", - "version": "1.1.20-alpha.2", + "version": "1.1.20", "private": true, "sideEffects": [ "app/utils/shim.js", @@ -17,9 +17,9 @@ }, "dependencies": { "@noble/hashes": "^1.8.0", - "@onekeyfe/hd-common-connect-sdk": "1.1.20-alpha.2", - "@onekeyfe/hd-core": "1.1.20-alpha.2", - "@onekeyfe/hd-shared": "1.1.20-alpha.2", + "@onekeyfe/hd-common-connect-sdk": "1.1.20", + "@onekeyfe/hd-core": "1.1.20", + "@onekeyfe/hd-shared": "1.1.20", "@radix-ui/react-checkbox": "^1.3.2", "@radix-ui/react-dialog": "^1.1.14", "@radix-ui/react-dropdown-menu": "^2.1.15", diff --git a/packages/core/package.json b/packages/core/package.json index d4c22baf0..bd658dc57 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/hd-core", - "version": "1.1.20-alpha.2", + "version": "1.1.20", "description": "Core processes and APIs for communicating with OneKey hardware devices.", "author": "OneKey", "homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme", @@ -25,8 +25,8 @@ "url": "https://github.com/OneKeyHQ/hardware-js-sdk/issues" }, "dependencies": { - "@onekeyfe/hd-shared": "1.1.20-alpha.2", - "@onekeyfe/hd-transport": "1.1.20-alpha.2", + "@onekeyfe/hd-shared": "1.1.20", + "@onekeyfe/hd-transport": "1.1.20", "axios": "1.12.2", "bignumber.js": "^9.0.2", "bytebuffer": "^5.0.1", diff --git a/packages/core/src/data-manager/DataManager.ts b/packages/core/src/data-manager/DataManager.ts index cd1daa4d7..bfcaa74b2 100644 --- a/packages/core/src/data-manager/DataManager.ts +++ b/packages/core/src/data-manager/DataManager.ts @@ -5,11 +5,13 @@ import { EDeviceType, EFirmwareType } from '@onekeyfe/hd-shared'; import MessagesJSON from '../data/messages/messages.json'; import MessagesLegacyV1JSON from '../data/messages/messages_legacy_v1.json'; import { + LoggerNames, getDeviceBLEFirmwareVersion, getDeviceFirmwareVersion, getDeviceType, getFirmwareType, getFirmwareUpdateField, + getLogger, getTimeStamp, } from '../utils'; import { DeviceModelToTypes } from '../types'; @@ -27,6 +29,8 @@ import type { RemoteConfigResponse, } from '../types'; +const Log = getLogger(LoggerNames.Core); + export const FIRMWARE_FIELDS = [ 'firmware', 'firmware-v2', @@ -387,18 +391,50 @@ export default class DataManager { if (!settings.fetchConfig) { return; } - try { - const url = settings.preRelease - ? 'https://data.onekey.so/pre-config.json' - : 'https://data.onekey.so/config.json'; - - const { data } = await axios.get( - `${url}?noCache=${getTimeStamp()}`, - // because of iframe timeout is 10000 - { - timeout: 7000, + + const url = settings.preRelease + ? 'https://data.onekey.so/pre-config.json' + : 'https://data.onekey.so/config.json'; + + const urlWithCache = `${url}?noCache=${getTimeStamp()}`; + let data: RemoteConfigResponse | null = null; + let fetchMethod: 'configFetcher' | 'axios' | 'none' = 'none'; + + // 1. Try custom configFetcher first (client-side IP direct connection support) + if (settings.configFetcher) { + Log.debug('[DataConfig] Trying configFetcher (client-side fetcher)...'); + try { + data = await settings.configFetcher(urlWithCache); + if (data) { + fetchMethod = 'configFetcher'; + Log.log('[DataConfig] ConfigFetcher success'); + } else { + Log.debug('[DataConfig] ConfigFetcher returned null, will fallback to axios'); } - ); + } catch (e) { + Log.warn('[DataConfig] ConfigFetcher error, will fallback to axios:', e); + } + } + + // 2. Fallback to default axios request + if (!data) { + Log.debug('[DataConfig] Trying axios (SDK default fetcher)...'); + try { + const response = await axios.get(urlWithCache, { + // because of iframe timeout is 10000 + timeout: 7000, + }); + data = response.data; + fetchMethod = 'axios'; + Log.log('[DataConfig] Axios fetch success'); + } catch (e) { + Log.warn('[DataConfig] Axios fetch error:', e); + } + } + + // 3. Apply config if available + if (data) { + Log.log(`[DataConfig] Config loaded successfully via [${fetchMethod}]`); this.deviceMap = { [EDeviceType.Classic]: this.enrichFirmwareReleaseInfo(data.classic), [EDeviceType.Classic1s]: this.enrichFirmwareReleaseInfo(data.classic1s), @@ -410,8 +446,8 @@ export default class DataManager { this.assets = { bridge: data.bridge, }; - } catch (e) { - // ignore + } else { + Log.warn('[DataConfig] All fetch methods failed, using built-in default config'); } } diff --git a/packages/core/src/types/settings.ts b/packages/core/src/types/settings.ts index fc1214031..9862148d6 100644 --- a/packages/core/src/types/settings.ts +++ b/packages/core/src/types/settings.ts @@ -32,6 +32,7 @@ export type ConnectSettings = { preRelease?: boolean; fetchConfig?: boolean; extension?: string; + configFetcher?: (url: string) => Promise; }; export type IVersionArray = [number, number, number]; diff --git a/packages/hd-ble-sdk/package.json b/packages/hd-ble-sdk/package.json index 6fb34e27f..c06757584 100644 --- a/packages/hd-ble-sdk/package.json +++ b/packages/hd-ble-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/hd-ble-sdk", - "version": "1.1.20-alpha.2", + "version": "1.1.20", "author": "OneKey", "homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme", "license": "ISC", @@ -20,8 +20,8 @@ "lint:fix": "eslint . --fix" }, "dependencies": { - "@onekeyfe/hd-core": "1.1.20-alpha.2", - "@onekeyfe/hd-shared": "1.1.20-alpha.2", - "@onekeyfe/hd-transport-react-native": "1.1.20-alpha.2" + "@onekeyfe/hd-core": "1.1.20", + "@onekeyfe/hd-shared": "1.1.20", + "@onekeyfe/hd-transport-react-native": "1.1.20" } } diff --git a/packages/hd-common-connect-sdk/package.json b/packages/hd-common-connect-sdk/package.json index fe168f891..31006b625 100644 --- a/packages/hd-common-connect-sdk/package.json +++ b/packages/hd-common-connect-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/hd-common-connect-sdk", - "version": "1.1.20-alpha.2", + "version": "1.1.20", "author": "OneKey", "homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme", "license": "ISC", @@ -20,11 +20,11 @@ "lint:fix": "eslint . --fix" }, "dependencies": { - "@onekeyfe/hd-core": "1.1.20-alpha.2", - "@onekeyfe/hd-shared": "1.1.20-alpha.2", - "@onekeyfe/hd-transport-emulator": "1.1.20-alpha.2", - "@onekeyfe/hd-transport-http": "1.1.20-alpha.2", - "@onekeyfe/hd-transport-lowlevel": "1.1.20-alpha.2", - "@onekeyfe/hd-transport-web-device": "1.1.20-alpha.2" + "@onekeyfe/hd-core": "1.1.20", + "@onekeyfe/hd-shared": "1.1.20", + "@onekeyfe/hd-transport-emulator": "1.1.20", + "@onekeyfe/hd-transport-http": "1.1.20", + "@onekeyfe/hd-transport-lowlevel": "1.1.20", + "@onekeyfe/hd-transport-web-device": "1.1.20" } } diff --git a/packages/hd-transport-electron/package.json b/packages/hd-transport-electron/package.json index 0106578d0..65eaf1d9e 100644 --- a/packages/hd-transport-electron/package.json +++ b/packages/hd-transport-electron/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/hd-transport-electron", - "version": "1.1.20-alpha.2", + "version": "1.1.20", "author": "OneKey", "homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme", "license": "MIT", @@ -25,9 +25,9 @@ "electron-log": ">=4.0.0" }, "dependencies": { - "@onekeyfe/hd-core": "1.1.20-alpha.2", - "@onekeyfe/hd-shared": "1.1.20-alpha.2", - "@onekeyfe/hd-transport": "1.1.20-alpha.2", + "@onekeyfe/hd-core": "1.1.20", + "@onekeyfe/hd-shared": "1.1.20", + "@onekeyfe/hd-transport": "1.1.20", "@stoprocent/noble": "2.3.4", "p-retry": "^4.6.2" }, diff --git a/packages/hd-transport-emulator/package.json b/packages/hd-transport-emulator/package.json index d8c2c44f5..fde4a779e 100644 --- a/packages/hd-transport-emulator/package.json +++ b/packages/hd-transport-emulator/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/hd-transport-emulator", - "version": "1.1.20-alpha.2", + "version": "1.1.20", "description": "hardware emulator transport", "author": "OneKey", "homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme", @@ -24,8 +24,8 @@ "url": "https://github.com/OneKeyHQ/hardware-js-sdk/issues" }, "dependencies": { - "@onekeyfe/hd-shared": "1.1.20-alpha.2", - "@onekeyfe/hd-transport": "1.1.20-alpha.2", + "@onekeyfe/hd-shared": "1.1.20", + "@onekeyfe/hd-transport": "1.1.20", "axios": "1.12.2", "secure-json-parse": "^4.0.0" } diff --git a/packages/hd-transport-http/package.json b/packages/hd-transport-http/package.json index d991da8b9..67cb6e2f2 100644 --- a/packages/hd-transport-http/package.json +++ b/packages/hd-transport-http/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/hd-transport-http", - "version": "1.1.20-alpha.2", + "version": "1.1.20", "description": "hardware http transport", "author": "OneKey", "homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme", @@ -24,8 +24,8 @@ "url": "https://github.com/OneKeyHQ/hardware-js-sdk/issues" }, "dependencies": { - "@onekeyfe/hd-shared": "1.1.20-alpha.2", - "@onekeyfe/hd-transport": "1.1.20-alpha.2", + "@onekeyfe/hd-shared": "1.1.20", + "@onekeyfe/hd-transport": "1.1.20", "axios": "1.12.2", "secure-json-parse": "^4.0.0" } diff --git a/packages/hd-transport-lowlevel/package.json b/packages/hd-transport-lowlevel/package.json index b35c6e9ee..ace39f23f 100644 --- a/packages/hd-transport-lowlevel/package.json +++ b/packages/hd-transport-lowlevel/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/hd-transport-lowlevel", - "version": "1.1.20-alpha.2", + "version": "1.1.20", "homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme", "license": "MIT", "main": "dist/index.js", @@ -19,7 +19,7 @@ "lint:fix": "eslint . --fix" }, "dependencies": { - "@onekeyfe/hd-shared": "1.1.20-alpha.2", - "@onekeyfe/hd-transport": "1.1.20-alpha.2" + "@onekeyfe/hd-shared": "1.1.20", + "@onekeyfe/hd-transport": "1.1.20" } } diff --git a/packages/hd-transport-react-native/package.json b/packages/hd-transport-react-native/package.json index e232d0aa3..39bf37066 100644 --- a/packages/hd-transport-react-native/package.json +++ b/packages/hd-transport-react-native/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/hd-transport-react-native", - "version": "1.1.20-alpha.2", + "version": "1.1.20", "homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme", "license": "MIT", "main": "dist/index.js", @@ -19,8 +19,8 @@ "lint:fix": "eslint . --fix" }, "dependencies": { - "@onekeyfe/hd-shared": "1.1.20-alpha.2", - "@onekeyfe/hd-transport": "1.1.20-alpha.2", + "@onekeyfe/hd-shared": "1.1.20", + "@onekeyfe/hd-transport": "1.1.20", "@onekeyfe/react-native-ble-utils": "^0.1.4", "react-native-ble-plx": "3.5.0" } diff --git a/packages/hd-transport-web-device/package.json b/packages/hd-transport-web-device/package.json index 5913873b7..306b24c79 100644 --- a/packages/hd-transport-web-device/package.json +++ b/packages/hd-transport-web-device/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/hd-transport-web-device", - "version": "1.1.20-alpha.2", + "version": "1.1.20", "author": "OneKey", "homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme", "license": "MIT", @@ -20,11 +20,11 @@ "lint:fix": "eslint . --fix" }, "dependencies": { - "@onekeyfe/hd-shared": "1.1.20-alpha.2", - "@onekeyfe/hd-transport": "1.1.20-alpha.2" + "@onekeyfe/hd-shared": "1.1.20", + "@onekeyfe/hd-transport": "1.1.20" }, "devDependencies": { - "@onekeyfe/hd-transport-electron": "1.1.20-alpha.2", + "@onekeyfe/hd-transport-electron": "1.1.20", "@types/w3c-web-usb": "^1.0.6", "@types/web-bluetooth": "^0.0.17" } diff --git a/packages/hd-transport/package.json b/packages/hd-transport/package.json index 1b232f8a1..9f5c19115 100644 --- a/packages/hd-transport/package.json +++ b/packages/hd-transport/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/hd-transport", - "version": "1.1.20-alpha.2", + "version": "1.1.20", "description": "Transport layer abstractions and utilities for OneKey hardware SDK.", "author": "OneKey", "homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme", diff --git a/packages/hd-web-sdk/package.json b/packages/hd-web-sdk/package.json index a018ab9c2..946998497 100644 --- a/packages/hd-web-sdk/package.json +++ b/packages/hd-web-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/hd-web-sdk", - "version": "1.1.20-alpha.2", + "version": "1.1.20", "author": "OneKey", "homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme", "license": "ISC", @@ -21,10 +21,10 @@ }, "dependencies": { "@onekeyfe/cross-inpage-provider-core": "^0.0.17", - "@onekeyfe/hd-core": "1.1.20-alpha.2", - "@onekeyfe/hd-shared": "1.1.20-alpha.2", - "@onekeyfe/hd-transport-http": "1.1.20-alpha.2", - "@onekeyfe/hd-transport-web-device": "1.1.20-alpha.2" + "@onekeyfe/hd-core": "1.1.20", + "@onekeyfe/hd-shared": "1.1.20", + "@onekeyfe/hd-transport-http": "1.1.20", + "@onekeyfe/hd-transport-web-device": "1.1.20" }, "devDependencies": { "@babel/plugin-proposal-optional-chaining": "^7.17.12", diff --git a/packages/shared/package.json b/packages/shared/package.json index 8367625b3..ff6553399 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/hd-shared", - "version": "1.1.20-alpha.2", + "version": "1.1.20", "description": "Hardware SDK's shared tool library", "keywords": [ "Hardware-SDK",