1- import  {  inject ,  injectable  }  from  '@theia/core/shared/inversify' ; 
1+ import  {  nls  }  from  '@theia/core/lib/common' ; 
2+ import  {  injectable  }  from  '@theia/core/shared/inversify' ; 
3+ import  {  CoreService  }  from  '../../common/protocol' ; 
24import  {  ArduinoMenus  }  from  '../menu/arduino-menus' ; 
3- import  {  BoardsDataStore  }  from  '../boards/boards-data-store' ; 
4- import  {  BoardsServiceProvider  }  from  '../boards/boards-service-provider' ; 
55import  { 
6-   CoreServiceContribution , 
76  Command , 
87  CommandRegistry , 
8+   CoreServiceContribution , 
99  MenuModelRegistry , 
1010}  from  './contribution' ; 
11- import  {  nls  }  from  '@theia/core/lib/common' ; 
1211
1312@injectable ( ) 
1413export  class  BurnBootloader  extends  CoreServiceContribution  { 
15-   @inject ( BoardsDataStore ) 
16-   protected  readonly  boardsDataStore : BoardsDataStore ; 
17- 
18-   @inject ( BoardsServiceProvider ) 
19-   protected  readonly  boardsServiceClientImpl : BoardsServiceProvider ; 
20- 
2114  override  registerCommands ( registry : CommandRegistry ) : void { 
2215    registry . registerCommand ( BurnBootloader . Commands . BURN_BOOTLOADER ,  { 
2316      execute : ( )  =>  this . burnBootloader ( ) , 
@@ -35,32 +28,19 @@ export class BurnBootloader extends CoreServiceContribution {
3528    } ) ; 
3629  } 
3730
38-   async  burnBootloader ( ) : Promise < void >  { 
31+   private  async  burnBootloader ( ) : Promise < void >  { 
32+     const  options  =  await  this . options ( ) ; 
3933    try  { 
40-       const  {  boardsConfig }  =  this . boardsServiceClientImpl ; 
41-       const  port  =  boardsConfig . selectedPort ; 
42-       const  [ fqbn ,  {  selectedProgrammer : programmer  } ,  verify ,  verbose ]  = 
43-         await  Promise . all ( [ 
44-           this . boardsDataStore . appendConfigToFqbn ( 
45-             boardsConfig . selectedBoard ?. fqbn 
46-           ) , 
47-           this . boardsDataStore . getData ( boardsConfig . selectedBoard ?. fqbn ) , 
48-           this . preferences . get ( 'arduino.upload.verify' ) , 
49-           this . preferences . get ( 'arduino.upload.verbose' ) , 
50-         ] ) ; 
51- 
52-       const  board  =  { 
53-         ...boardsConfig . selectedBoard , 
54-         name : boardsConfig . selectedBoard ?. name  ||  '' , 
55-         fqbn, 
56-       } ; 
57-       this . outputChannelManager . getChannel ( 'Arduino' ) . clear ( ) ; 
58-       await  this . coreService . burnBootloader ( { 
59-         board, 
60-         programmer, 
61-         port, 
62-         verify, 
63-         verbose, 
34+       await  this . doWithProgress ( { 
35+         progressText : nls . localize ( 
36+           'arduino/bootloader/burningBootloader' , 
37+           'Burning bootloader...' 
38+         ) , 
39+         task : ( progressId ,  coreService )  => 
40+           coreService . burnBootloader ( { 
41+             ...options , 
42+             progressId, 
43+           } ) , 
6444      } ) ; 
6545      this . messageService . info ( 
6646        nls . localize ( 
@@ -75,6 +55,27 @@ export class BurnBootloader extends CoreServiceContribution {
7555      this . handleError ( e ) ; 
7656    } 
7757  } 
58+ 
59+   private  async  options ( ) : Promise < CoreService . Options . Bootloader >  { 
60+     const  {  boardsConfig }  =  this . boardsServiceProvider ; 
61+     const  port  =  boardsConfig . selectedPort ; 
62+     const  [ fqbn ,  {  selectedProgrammer : programmer  } ,  verify ,  verbose ]  = 
63+       await  Promise . all ( [ 
64+         this . boardsDataStore . appendConfigToFqbn ( 
65+           boardsConfig . selectedBoard ?. fqbn 
66+         ) , 
67+         this . boardsDataStore . getData ( boardsConfig . selectedBoard ?. fqbn ) , 
68+         this . preferences . get ( 'arduino.upload.verify' ) , 
69+         this . preferences . get ( 'arduino.upload.verbose' ) , 
70+       ] ) ; 
71+     return  { 
72+       fqbn, 
73+       programmer, 
74+       port, 
75+       verify, 
76+       verbose, 
77+     } ; 
78+   } 
7879} 
7980
8081export  namespace  BurnBootloader  { 
0 commit comments