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