Skip to content

Commit ff53e1e

Browse files
chore: optimize pro update boot (#4590)
1 parent 2158a52 commit ff53e1e

File tree

2 files changed

+34
-5
lines changed

2 files changed

+34
-5
lines changed

packages/kit-bg/src/services/ServiceHardware.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import {
4242
import { isPassphraseWallet } from '@onekeyhq/shared/src/engine/engineUtils';
4343
import debugLogger from '@onekeyhq/shared/src/logger/debugLogger';
4444
import platformEnv from '@onekeyhq/shared/src/platformEnv';
45+
import { createPromiseWithTimeout } from '@onekeyhq/shared/src/utils/promiseUtils';
4546
import { equalsIgnoreCase } from '@onekeyhq/shared/src/utils/stringUtils';
4647
import type {
4748
EOnekeyDomain,
@@ -433,10 +434,11 @@ class ServiceHardware extends ServiceBase {
433434
maxTryCount = 10,
434435
bootloaderMode = false,
435436
) {
437+
const hardwareSDK = await this.getSDKInstance();
436438
return new Promise((resolve) => {
437439
let tryCount = 0;
438440
deviceUtils.startDeviceScan(
439-
(response) => {
441+
async (response) => {
440442
tryCount += 1;
441443
if (tryCount > maxTryCount) {
442444
deviceUtils.stopScan();
@@ -451,9 +453,16 @@ class ServiceHardware extends ServiceBase {
451453
: (response.payload ?? []).find((d) =>
452454
equalsIgnoreCase(d.connectId, connectId),
453455
);
456+
454457
if (deviceExist) {
455-
deviceUtils.stopScan();
456-
resolve(true);
458+
const res = await createPromiseWithTimeout(
459+
hardwareSDK.getFeatures(connectId),
460+
2000,
461+
);
462+
if (res?.success) {
463+
deviceUtils.stopScan();
464+
resolve(true);
465+
}
457466
}
458467
},
459468
() => {},
@@ -470,7 +479,6 @@ class ServiceHardware extends ServiceBase {
470479
// eslint-disable-next-line no-async-promise-executor
471480
return new Promise(async (resolve) => {
472481
const hardwareSDK = await this.getSDKInstance();
473-
// restart count down
474482
await wait(8000);
475483
let tryCount = 0;
476484
// polling device when restart success

packages/shared/src/utils/promiseUtils.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,25 @@ const createAnyPromise = <T>(promises: Promise<T>[]): Promise<T> =>
1818
(val) => Promise.resolve(val),
1919
);
2020

21-
export { createDelayPromise, createAnyPromise };
21+
function createPromiseWithTimeout<T>(
22+
promise: Promise<T>,
23+
timeout: number,
24+
): Promise<T> {
25+
return new Promise<T>((resolve, reject) => {
26+
const timer = setTimeout(() => {
27+
reject(new Error('Operation timed out'));
28+
}, timeout);
29+
30+
promise
31+
.then((value) => {
32+
clearTimeout(timer);
33+
resolve(value);
34+
})
35+
.catch((err) => {
36+
clearTimeout(timer);
37+
reject(err);
38+
});
39+
});
40+
}
41+
42+
export { createDelayPromise, createAnyPromise, createPromiseWithTimeout };

0 commit comments

Comments
 (0)