From db83ed095bed5cc0151cac4f006581ec2f660a08 Mon Sep 17 00:00:00 2001 From: Akos Kitta Date: Fri, 29 Sep 2023 11:33:05 +0200 Subject: [PATCH 1/4] fix: update status bar if board+port restored This is not a functional bug, as this component listens on board list changes, but no unnecessary refresh is needed. Signed-off-by: Akos Kitta --- .../src/browser/contributions/selected-board.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/arduino-ide-extension/src/browser/contributions/selected-board.ts b/arduino-ide-extension/src/browser/contributions/selected-board.ts index 8c1ad74d6..00fbba575 100644 --- a/arduino-ide-extension/src/browser/contributions/selected-board.ts +++ b/arduino-ide-extension/src/browser/contributions/selected-board.ts @@ -19,16 +19,18 @@ export class SelectedBoard extends Contribution { private readonly boardsServiceProvider: BoardsServiceProvider; override onStart(): void { - this.boardsServiceProvider.onBoardListDidChange(() => - this.update(this.boardsServiceProvider.boardList) + this.boardsServiceProvider.onBoardListDidChange((boardList) => + this.update(boardList) ); } override onReady(): void { - this.update(this.boardsServiceProvider.boardList); + this.boardsServiceProvider.ready.then(() => this.update()); } - private update(boardList: BoardList): void { + private update( + boardList: BoardList = this.boardsServiceProvider.boardList + ): void { const { selectedBoard, selectedPort } = boardList.boardsConfig; this.statusBar.setElement('arduino-selected-board', { alignment: StatusBarAlignment.RIGHT, From 4d04aac56d5af1e502f6a596a641e4bccd43a882 Mon Sep 17 00:00:00 2001 From: Akos Kitta Date: Fri, 29 Sep 2023 11:38:46 +0200 Subject: [PATCH 2/4] fix: refresh debug state if board+port is restored Closes #2237 Signed-off-by: Akos Kitta --- arduino-ide-extension/src/browser/contributions/debug.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arduino-ide-extension/src/browser/contributions/debug.ts b/arduino-ide-extension/src/browser/contributions/debug.ts index ee07d7aa5..5dec4655c 100644 --- a/arduino-ide-extension/src/browser/contributions/debug.ts +++ b/arduino-ide-extension/src/browser/contributions/debug.ts @@ -19,7 +19,7 @@ import { SketchContribution, TabBarToolbarRegistry, } from './contribution'; -import { MaybePromise, MenuModelRegistry, nls } from '@theia/core/lib/common'; +import { MenuModelRegistry, nls } from '@theia/core/lib/common'; import { CurrentSketch } from '../sketches-service-client-impl'; import { ArduinoMenus } from '../menu/arduino-menus'; @@ -99,8 +99,8 @@ export class Debug extends SketchContribution { this.notificationCenter.onPlatformDidUninstall(() => this.refreshState()); } - override onReady(): MaybePromise { - this.refreshState(); + override onReady(): void { + this.boardsServiceProvider.ready.then(() => this.refreshState()); } override registerCommands(registry: CommandRegistry): void { From 20a192afe6d14818ad2be18ac8c53e9fb2c4d671 Mon Sep 17 00:00:00 2001 From: Akos Kitta Date: Fri, 29 Sep 2023 11:43:20 +0200 Subject: [PATCH 3/4] fix: init `Include Library` if board+port is ready Closes #2239 Signed-off-by: Akos Kitta --- .../browser/contributions/include-library.ts | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/arduino-ide-extension/src/browser/contributions/include-library.ts b/arduino-ide-extension/src/browser/contributions/include-library.ts index 5d77e9ec3..9b2a45101 100644 --- a/arduino-ide-extension/src/browser/contributions/include-library.ts +++ b/arduino-ide-extension/src/browser/contributions/include-library.ts @@ -2,7 +2,6 @@ import PQueue from 'p-queue'; import { inject, injectable } from '@theia/core/shared/inversify'; import URI from '@theia/core/lib/common/uri'; import { MonacoEditor } from '@theia/monaco/lib/browser/monaco-editor'; -import { EditorManager } from '@theia/editor/lib/browser'; import { MenuModelRegistry, MenuPath } from '@theia/core/lib/common/menu'; import { Disposable, @@ -22,28 +21,25 @@ import { CurrentSketch } from '../sketches-service-client-impl'; @injectable() export class IncludeLibrary extends SketchContribution { @inject(CommandRegistry) - protected readonly commandRegistry: CommandRegistry; + private readonly commandRegistry: CommandRegistry; @inject(MenuModelRegistry) - protected readonly menuRegistry: MenuModelRegistry; + private readonly menuRegistry: MenuModelRegistry; @inject(MainMenuManager) - protected readonly mainMenuManager: MainMenuManager; - - @inject(EditorManager) - protected override readonly editorManager: EditorManager; + private readonly mainMenuManager: MainMenuManager; @inject(NotificationCenter) - protected readonly notificationCenter: NotificationCenter; + private readonly notificationCenter: NotificationCenter; @inject(BoardsServiceProvider) - protected readonly boardsServiceProvider: BoardsServiceProvider; + private readonly boardsServiceProvider: BoardsServiceProvider; @inject(LibraryService) - protected readonly libraryService: LibraryService; + private readonly libraryService: LibraryService; - protected readonly queue = new PQueue({ autoStart: true, concurrency: 1 }); - protected readonly toDispose = new DisposableCollection(); + private readonly queue = new PQueue({ autoStart: true, concurrency: 1 }); + private readonly toDispose = new DisposableCollection(); override onStart(): void { this.boardsServiceProvider.onBoardsConfigDidChange(() => @@ -56,8 +52,8 @@ export class IncludeLibrary extends SketchContribution { this.notificationCenter.onDidReinitialize(() => this.updateMenuActions()); } - override async onReady(): Promise { - this.updateMenuActions(); + override onReady(): void { + this.boardsServiceProvider.ready.then(() => this.updateMenuActions()); } override registerMenus(registry: MenuModelRegistry): void { @@ -93,7 +89,7 @@ export class IncludeLibrary extends SketchContribution { }); } - protected async updateMenuActions(): Promise { + private async updateMenuActions(): Promise { return this.queue.add(async () => { this.toDispose.dispose(); this.mainMenuManager.update(); @@ -139,7 +135,7 @@ export class IncludeLibrary extends SketchContribution { }); } - protected registerLibrary( + private registerLibrary( libraryOrPlaceholder: LibraryPackage | string, menuPath: MenuPath ): Disposable { @@ -172,7 +168,7 @@ export class IncludeLibrary extends SketchContribution { ); } - protected async includeLibrary(library: LibraryPackage): Promise { + private async includeLibrary(library: LibraryPackage): Promise { const sketch = await this.sketchServiceClient.currentSketch(); if (!CurrentSketch.isValid(sketch)) { return; From 4a8740dd7c5de7750d99d403c2266f85955e616c Mon Sep 17 00:00:00 2001 From: Akos Kitta Date: Fri, 29 Sep 2023 11:45:12 +0200 Subject: [PATCH 4/4] fix: init library examples if board+port is ready Closes #2239 Signed-off-by: Akos Kitta --- arduino-ide-extension/src/browser/contributions/examples.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arduino-ide-extension/src/browser/contributions/examples.ts b/arduino-ide-extension/src/browser/contributions/examples.ts index 3796b7535..9bb2cbd56 100644 --- a/arduino-ide-extension/src/browser/contributions/examples.ts +++ b/arduino-ide-extension/src/browser/contributions/examples.ts @@ -300,8 +300,8 @@ export class LibraryExamples extends Examples { this.notificationCenter.onLibraryDidUninstall(() => this.update()); } - override async onReady(): Promise { - this.update(); // no `await` + override onReady(): void { + this.boardsServiceProvider.ready.then(() => this.update()); } protected override handleBoardChanged(board: Board | undefined): void {