From 7a3e6789d1696ef3e1d14a83481bd33580fe4d06 Mon Sep 17 00:00:00 2001 From: Akos Kitta Date: Fri, 5 Aug 2022 16:24:52 +0200 Subject: [PATCH] Defer settings/certificates load until app ready. Signed-off-by: Akos Kitta --- .../certificate-uploader-dialog.tsx | 14 ++++++++++---- .../src/browser/dialogs/settings/settings.ts | 8 +++++--- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/arduino-ide-extension/src/browser/dialogs/certificate-uploader/certificate-uploader-dialog.tsx b/arduino-ide-extension/src/browser/dialogs/certificate-uploader/certificate-uploader-dialog.tsx index 4a9d2f4d..21ec1586 100644 --- a/arduino-ide-extension/src/browser/dialogs/certificate-uploader/certificate-uploader-dialog.tsx +++ b/arduino-ide-extension/src/browser/dialogs/certificate-uploader/certificate-uploader-dialog.tsx @@ -19,6 +19,7 @@ import { CommandRegistry } from '@theia/core/lib/common/command'; import { certificateList, sanifyCertString } from './utils'; import { ArduinoFirmwareUploader } from '../../../common/protocol/arduino-firmware-uploader'; import { nls } from '@theia/core/lib/common'; +import { FrontendApplicationStateService } from '@theia/core/lib/browser/frontend-application-state'; @injectable() export class UploadCertificateDialogWidget extends ReactWidget { @@ -37,6 +38,9 @@ export class UploadCertificateDialogWidget extends ReactWidget { @inject(ArduinoFirmwareUploader) protected readonly arduinoFirmwareUploader: ArduinoFirmwareUploader; + @inject(FrontendApplicationStateService) + private readonly appStateService: FrontendApplicationStateService; + protected certificates: string[] = []; protected updatableFqbns: string[] = []; protected availableBoards: AvailableBoard[] = []; @@ -66,10 +70,12 @@ export class UploadCertificateDialogWidget extends ReactWidget { } }); - this.arduinoFirmwareUploader.updatableBoards().then((fqbns) => { - this.updatableFqbns = fqbns; - this.update(); - }); + this.appStateService.reachedState('ready').then(() => + this.arduinoFirmwareUploader.updatableBoards().then((fqbns) => { + this.updatableFqbns = fqbns; + this.update(); + }) + ); this.boardsServiceClient.onAvailableBoardsChanged((availableBoards) => { this.availableBoards = availableBoards; diff --git a/arduino-ide-extension/src/browser/dialogs/settings/settings.ts b/arduino-ide-extension/src/browser/dialogs/settings/settings.ts index 3bd5f13c..7033f8e8 100644 --- a/arduino-ide-extension/src/browser/dialogs/settings/settings.ts +++ b/arduino-ide-extension/src/browser/dialogs/settings/settings.ts @@ -111,9 +111,11 @@ export class SettingsService { @postConstruct() protected async init(): Promise { - const settings = await this.loadSettings(); - this._settings = deepClone(settings); - this.ready.resolve(); + this.appStateService.reachedState('ready').then(async () => { + const settings = await this.loadSettings(); + this._settings = deepClone(settings); + this.ready.resolve(); + }); } protected async loadSettings(): Promise {