@@ -13,24 +13,13 @@ import { ERRORS, PROTO } from '../constants';
13
13
import { getReleases } from '../data/firmwareInfo' ;
14
14
import type { Device } from '../device/Device' ;
15
15
import { DeviceList } from '../device/DeviceList' ;
16
- import { CoreEventMessage , DEVICE , UI , createDeviceMessage , createUiMessage } from '../events' ;
16
+ import { CoreEventMessage , UI , createUiMessage } from '../events' ;
17
17
import { CommonParams , DeviceUniquePath } from '../types' ;
18
18
import { FirmwareUpdateResponse } from '../types/api/firmwareUpdate' ;
19
19
import type { Log } from '../utils/debug' ;
20
20
21
21
type PostMessage = ( message : CoreEventMessage ) => void ;
22
22
23
- const registerEvents = ( device : Device , postMessage : PostMessage ) => {
24
- device . on ( DEVICE . BUTTON , ( { device : _ , payload } ) => {
25
- postMessage (
26
- createDeviceMessage ( DEVICE . BUTTON , {
27
- code : payload . code ,
28
- device : device . toMessageObject ( ) ,
29
- } ) ,
30
- ) ;
31
- } ) ;
32
- } ;
33
-
34
23
type ReconnectParams = {
35
24
bootloader : boolean ;
36
25
method : 'wait' | 'auto' | 'manual' ;
@@ -40,14 +29,15 @@ type ReconnectParams = {
40
29
type ReconnectContext = {
41
30
deviceList : DeviceList ;
42
31
device : Device ;
32
+ registerEvents : ( device : Device ) => void ;
43
33
postMessage : PostMessage ;
44
34
log : Log ;
45
35
abortSignal : AbortSignal ;
46
36
} ;
47
37
48
38
const waitForReconnectedDevice = async (
49
39
{ bootloader, method, intermediary } : ReconnectParams ,
50
- { deviceList, device, postMessage, log, abortSignal } : ReconnectContext ,
40
+ { deviceList, device, registerEvents , postMessage, log, abortSignal } : ReconnectContext ,
51
41
) : Promise < Device > => {
52
42
const target = intermediary || ! bootloader ? 'normal' : 'bootloader' ;
53
43
@@ -112,6 +102,7 @@ const waitForReconnectedDevice = async (
112
102
'we were unable to read device.features on the first interaction after seeing it, retrying...' ,
113
103
) ;
114
104
try {
105
+ registerEvents ( reconnectedDevice ) ;
115
106
// todo: it keeps printing warning "Previous call is still running" on reconnect from bl to normal
116
107
await reconnectedDevice . run ( undefined , {
117
108
skipFirmwareChecks : true ,
@@ -147,7 +138,7 @@ const waitForReconnectedDevice = async (
147
138
throw ERRORS . TypedError ( 'Method_Interrupted' ) ;
148
139
}
149
140
150
- registerEvents ( reconnectedDevice , postMessage ) ;
141
+ registerEvents ( reconnectedDevice ) ;
151
142
await reconnectedDevice . waitForFirstRun ( ) ;
152
143
153
144
if ( ! reconnectedDevice . isUsedHere ( ) ) {
@@ -292,6 +283,7 @@ export type Params = {
292
283
293
284
type Context = {
294
285
deviceList : DeviceList ;
286
+ registerEvents : ( device : Device ) => void ;
295
287
postMessage : PostMessage ;
296
288
initDevice : ( path ?: DeviceUniquePath ) => Promise < Device > ;
297
289
log : Log ;
@@ -305,8 +297,9 @@ type OnCallFirmwareUpdateParams = {
305
297
306
298
export const onCallFirmwareUpdate = async ( {
307
299
params,
308
- context : { deviceList , postMessage , initDevice , log , abortSignal } ,
300
+ context,
309
301
} : OnCallFirmwareUpdateParams ) : Promise < FirmwareUpdateResponse > => {
302
+ const { deviceList, registerEvents, postMessage, initDevice, log } = context ;
310
303
log . debug ( 'onCallFirmwareUpdate with params: ' , params ) ;
311
304
312
305
const device = await initDevice ( params ?. device ?. path ) ;
@@ -319,7 +312,7 @@ export const onCallFirmwareUpdate = async ({
319
312
320
313
log . debug ( 'onCallFirmwareUpdate' , 'device' , device ) ;
321
314
322
- registerEvents ( device , postMessage ) ;
315
+ registerEvents ( device ) ;
323
316
324
317
const { manual, upgrade, language, btcOnly } = getInstallationParams ( device , params ) ;
325
318
log . debug ( 'onCallFirmwareUpdate' , 'installation params' , {
@@ -351,7 +344,7 @@ export const onCallFirmwareUpdate = async ({
351
344
352
345
reconnectedDevice = await waitForReconnectedDevice (
353
346
{ bootloader : true , method : 'manual' } ,
354
- { deviceList , device, log , postMessage , abortSignal } ,
347
+ { ... context , device } ,
355
348
) ;
356
349
} else {
357
350
// Device supports automatic reboot to bootloader, load translation data and do it
@@ -422,7 +415,7 @@ export const onCallFirmwareUpdate = async ({
422
415
}
423
416
reconnectedDevice = await waitForReconnectedDevice (
424
417
{ bootloader : true , method : 'auto' } ,
425
- { deviceList , device, log , postMessage , abortSignal } ,
418
+ { ... context , device } ,
426
419
) ;
427
420
}
428
421
@@ -449,7 +442,7 @@ export const onCallFirmwareUpdate = async ({
449
442
450
443
reconnectedDevice = await waitForReconnectedDevice (
451
444
{ bootloader : true , method : 'manual' , intermediary : true } ,
452
- { deviceList , device : reconnectedDevice , log , postMessage , abortSignal } ,
445
+ { ... context , device : reconnectedDevice } ,
453
446
) ;
454
447
455
448
binaryInfo = await getBinaryHelper ( reconnectedDevice , params , log , postMessage , btcOnly ) ;
@@ -467,7 +460,7 @@ export const onCallFirmwareUpdate = async ({
467
460
468
461
reconnectedDevice = await waitForReconnectedDevice (
469
462
{ bootloader : false , method : 'wait' } ,
470
- { deviceList , device : reconnectedDevice , log , postMessage , abortSignal } ,
463
+ { ... context , device : reconnectedDevice } ,
471
464
) ;
472
465
473
466
// features.firmware_present non-null value implies that device was initially connected with
0 commit comments