@@ -29,10 +29,10 @@ export class BoardsDataMenuUpdater implements FrontendApplicationContribution {
29
29
30
30
protected readonly toDisposeOnBoardChange = new DisposableCollection ( ) ;
31
31
32
- onStart ( ) : void {
33
- this . boardsDataStore . onChanged ( ( ) => this . updateMenuActions ( this . boardsServiceClient . boardsConfig . selectedBoard ) ) ;
34
- this . boardsServiceClient . onBoardsConfigChanged ( ( { selectedBoard } ) => this . updateMenuActions ( selectedBoard ) ) ;
35
- this . updateMenuActions ( this . boardsServiceClient . boardsConfig . selectedBoard ) ;
32
+ async onStart ( ) : Promise < void > {
33
+ await this . updateMenuActions ( this . boardsServiceClient . boardsConfig . selectedBoard ) ;
34
+ this . boardsDataStore . onChanged ( async ( ) => await this . updateMenuActions ( this . boardsServiceClient . boardsConfig . selectedBoard ) ) ;
35
+ this . boardsServiceClient . onBoardsConfigChanged ( async ( { selectedBoard } ) => await this . updateMenuActions ( selectedBoard ) ) ;
36
36
}
37
37
38
38
protected async updateMenuActions ( selectedBoard : Board | undefined ) : Promise < void > {
@@ -43,7 +43,7 @@ export class BoardsDataMenuUpdater implements FrontendApplicationContribution {
43
43
if ( fqbn ) {
44
44
const { configOptions, programmers, selectedProgrammer } = await this . boardsDataStore . getData ( fqbn ) ;
45
45
if ( configOptions . length ) {
46
- const boardsConfigMenuPath = [ ...ArduinoMenus . TOOLS , 'z01_boardsConfig' ] ; // `z_` is for ordering.
46
+ const boardsConfigMenuPath = [ ...ArduinoMenus . TOOLS__BOARD_SETTINGS_GROUP , 'z01_boardsConfig' ] ; // `z_` is for ordering.
47
47
for ( const { label, option, values } of configOptions . sort ( ConfigOption . LABEL_COMPARATOR ) ) {
48
48
const menuPath = [ ...boardsConfigMenuPath , `${ option } ` ] ;
49
49
const commands = new Map < string , Disposable & { label : string } > ( )
@@ -70,9 +70,10 @@ export class BoardsDataMenuUpdater implements FrontendApplicationContribution {
70
70
}
71
71
}
72
72
if ( programmers . length ) {
73
- const programmersMenuPath = [ ...ArduinoMenus . TOOLS , 'z02_programmers' ] ;
73
+ const programmersMenuPath = [ ...ArduinoMenus . TOOLS__BOARD_SETTINGS_GROUP , 'z02_programmers' ] ;
74
74
const label = selectedProgrammer ? `Programmer: "${ selectedProgrammer . name } "` : 'Programmer'
75
75
this . menuRegistry . registerSubmenu ( programmersMenuPath , label ) ;
76
+ this . toDisposeOnBoardChange . push ( Disposable . create ( ( ) => this . unregisterSubmenu ( programmersMenuPath ) ) ) ;
76
77
for ( const programmer of programmers ) {
77
78
const { id, name } = programmer ;
78
79
const command = { id : `${ fqbn } -programmer--${ id } ` } ;
@@ -81,10 +82,10 @@ export class BoardsDataMenuUpdater implements FrontendApplicationContribution {
81
82
isToggled : ( ) => Programmer . equals ( programmer , selectedProgrammer )
82
83
} ;
83
84
this . menuRegistry . registerMenuAction ( programmersMenuPath , { commandId : command . id , label : name } ) ;
85
+ this . commandRegistry . registerCommand ( command , handler ) ;
84
86
this . toDisposeOnBoardChange . pushAll ( [
85
- this . commandRegistry . registerCommand ( command , handler ) ,
86
- Disposable . create ( ( ) => this . unregisterSubmenu ( programmersMenuPath ) ) ,
87
- Disposable . create ( ( ) => this . menuRegistry . unregisterMenuAction ( command , programmersMenuPath ) )
87
+ Disposable . create ( ( ) => this . commandRegistry . unregisterCommand ( command ) ) ,
88
+ Disposable . create ( ( ) => this . menuRegistry . unregisterMenuAction ( command . id ) )
88
89
] ) ;
89
90
}
90
91
}
0 commit comments