@@ -42,6 +42,7 @@ import {
4242import { isPassphraseWallet } from '@onekeyhq/shared/src/engine/engineUtils' ;
4343import debugLogger from '@onekeyhq/shared/src/logger/debugLogger' ;
4444import platformEnv from '@onekeyhq/shared/src/platformEnv' ;
45+ import { createPromiseWithTimeout } from '@onekeyhq/shared/src/utils/promiseUtils' ;
4546import { equalsIgnoreCase } from '@onekeyhq/shared/src/utils/stringUtils' ;
4647import 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
0 commit comments