1
- import semver from 'semver' ;
2
1
import EventEmitter from 'events' ;
3
2
import { Features , LowlevelTransportSharedPlugin , OneKeyDeviceInfo } from '@onekeyfe/hd-transport' ;
4
3
import {
@@ -8,15 +7,7 @@ import {
8
7
HardwareError ,
9
8
HardwareErrorCode ,
10
9
} from '@onekeyfe/hd-shared' ;
11
- import {
12
- getDeviceFirmwareVersion ,
13
- enableLog ,
14
- getLogger ,
15
- LoggerNames ,
16
- setLoggerPostMessage ,
17
- wait ,
18
- getMethodVersionRange ,
19
- } from '../utils' ;
10
+ import { enableLog , getLogger , LoggerNames , setLoggerPostMessage , wait } from '../utils' ;
20
11
import { supportNewPassphrase } from '../utils/deviceFeaturesUtils' ;
21
12
import { Device , DeviceEvents , InitOptions , RunOptions } from '../device/Device' ;
22
13
import { DeviceList } from '../device/DeviceList' ;
@@ -108,7 +99,10 @@ export const callAPI = async (message: CoreMessage) => {
108
99
const response = await method . run ( ) ;
109
100
return createResponseMessage ( method . responseID , true , response ) ;
110
101
} catch ( error ) {
111
- return createResponseMessage ( method . responseID , false , { error } ) ;
102
+ const unsupportedMethodError = method . handleUnsupportedMethodError ( error ) ;
103
+ return createResponseMessage ( method . responseID , false , {
104
+ error : unsupportedMethodError ?? error ,
105
+ } ) ;
112
106
}
113
107
}
114
108
@@ -162,11 +156,6 @@ export const callAPI = async (message: CoreMessage) => {
162
156
try {
163
157
const inner = async ( ) : Promise < void > => {
164
158
// check firmware version
165
- const versionRange = getMethodVersionRange (
166
- device . features ,
167
- type => method . getVersionRange ( ) [ type ]
168
- ) ;
169
-
170
159
if ( device . features ) {
171
160
await DataManager . checkAndReloadData ( ) ;
172
161
const newVersionStatus = DataManager . getFirmwareStatus ( device . features ) ;
@@ -182,33 +171,12 @@ export const callAPI = async (message: CoreMessage) => {
182
171
) ;
183
172
}
184
173
185
- if ( versionRange ) {
186
- const currentVersion = getDeviceFirmwareVersion ( device . features ) . join ( '.' ) ;
187
- if ( semver . valid ( versionRange . min ) && semver . lt ( currentVersion , versionRange . min ) ) {
188
- if ( newVersionStatus === 'none' || newVersionStatus === 'valid' ) {
189
- throw ERRORS . TypedError ( HardwareErrorCode . NewFirmwareUnRelease ) ;
190
- }
191
-
192
- return Promise . reject (
193
- ERRORS . TypedError (
194
- HardwareErrorCode . CallMethodNeedUpgradeFirmware ,
195
- `Device firmware version is too low, please update to ${ versionRange . min } ` ,
196
- { current : currentVersion , require : versionRange . min }
197
- )
198
- ) ;
199
- }
200
- if (
201
- versionRange . max &&
202
- semver . valid ( versionRange . max ) &&
203
- semver . gte ( currentVersion , versionRange . max )
204
- ) {
205
- return Promise . reject (
206
- ERRORS . TypedError (
207
- HardwareErrorCode . CallMethodDeprecated ,
208
- `Device firmware version is too high, this method has been deprecated in ${ versionRange . max } ` ,
209
- { current : currentVersion , deprecated : versionRange . max }
210
- )
211
- ) ;
174
+ if ( method . preCheckVersionLimit ) {
175
+ const error = method . handleUnsupportedMethodError (
176
+ ERRORS . TypedError ( HardwareErrorCode . UnknownError , 'Failure_UnexpectedMessage' )
177
+ ) ;
178
+ if ( error ) {
179
+ throw error ;
212
180
}
213
181
}
214
182
}
@@ -306,7 +274,10 @@ export const callAPI = async (message: CoreMessage) => {
306
274
_callPromise ?. resolve ( messageResponse ) ;
307
275
} catch ( error ) {
308
276
Log . debug ( 'Call API - Inner Method Run Error: ' , error ) ;
309
- messageResponse = createResponseMessage ( method . responseID , false , { error } ) ;
277
+ const unsupportedMethodError = method . handleUnsupportedMethodError ( error ) ;
278
+ messageResponse = createResponseMessage ( method . responseID , false , {
279
+ error : unsupportedMethodError ?? error ,
280
+ } ) ;
310
281
_callPromise ?. resolve ( messageResponse ) ;
311
282
}
312
283
} ;
0 commit comments