From e9ee815cc87ecb246ef9e279f7b4df2be5180443 Mon Sep 17 00:00:00 2001 From: Roman Date: Sun, 10 Oct 2021 18:34:28 +0300 Subject: [PATCH] fine-tuning / more fixes Signed-off-by: Roman --- .../components/dock/edit-resource.store.ts | 16 +++++++++------- src/renderer/components/dock/edit-resource.tsx | 2 +- .../components/dock/install-chart.store.ts | 4 ++++ .../components/dock/upgrade-chart.store.ts | 6 ++++-- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/renderer/components/dock/edit-resource.store.ts b/src/renderer/components/dock/edit-resource.store.ts index 78fc221a99..7af9a840aa 100644 --- a/src/renderer/components/dock/edit-resource.store.ts +++ b/src/renderer/components/dock/edit-resource.store.ts @@ -52,17 +52,19 @@ export class EditResourceStore extends DockTabStore { } async editResource(tabId: TabId) { + await this.whenReady; const store = this.getStore(tabId); const data = this.getData(tabId); - let resource = this.getResource(tabId); - if (!store || !data) return; + if (data.resource && !data.draft) { + try { + let resource = this.getResource(tabId); - try { - resource ??= await store.loadFromPath(data.resource); - data.draft ||= jsYaml.safeDump(resource.toPlainObject()); - } catch (error) { - console.error(`[DOCK]: dumping '${data.resource}' has failed: ${error}`, { store, data }); + resource ??= await store.loadFromPath(data.resource); + data.draft ||= jsYaml.safeDump(resource.toPlainObject()); // dump resource if empty + } catch (error) { + console.error(`[DOCK]: dumping '${data.resource}' has failed: ${error}`, { store, data }); + } } } diff --git a/src/renderer/components/dock/edit-resource.tsx b/src/renderer/components/dock/edit-resource.tsx index aa9374d16f..6a1acea562 100644 --- a/src/renderer/components/dock/edit-resource.tsx +++ b/src/renderer/components/dock/edit-resource.tsx @@ -96,7 +96,7 @@ dockViewsManager.register(TabKind.EDIT_RESOURCE, { InfoPanel: EditResourceInfoPanel, editor: { getValue(tabId) { - return editResourceStore.getData(tabId).draft; + return editResourceStore.getData(tabId)?.draft ?? ""; }, setValue(tabId, value) { editResourceStore.getData(tabId).draft = value; diff --git a/src/renderer/components/dock/install-chart.store.ts b/src/renderer/components/dock/install-chart.store.ts index 36bebd6b3b..a06c5d3542 100644 --- a/src/renderer/components/dock/install-chart.store.ts +++ b/src/renderer/components/dock/install-chart.store.ts @@ -58,6 +58,7 @@ export class InstallChartStore extends DockTabStore { @action async loadData(tabId: TabId) { + await this.whenReady; const promises = []; if (!this.getData(tabId).values) { @@ -73,6 +74,7 @@ export class InstallChartStore extends DockTabStore { @action async loadVersions(tabId: TabId) { + await this.whenReady; const { repo, name, version } = this.getData(tabId); this.versions.delete(tabId); // reset @@ -84,6 +86,8 @@ export class InstallChartStore extends DockTabStore { @action async loadValues(tabId: TabId, attempt = 0): Promise { + await this.whenReady; + const data = this.getData(tabId); const { repo, name, version } = data; const values = await getChartValues(repo, name, version); diff --git a/src/renderer/components/dock/upgrade-chart.store.ts b/src/renderer/components/dock/upgrade-chart.store.ts index dfc785f8b0..5f39bb18a0 100644 --- a/src/renderer/components/dock/upgrade-chart.store.ts +++ b/src/renderer/components/dock/upgrade-chart.store.ts @@ -58,6 +58,8 @@ export class UpgradeChartStore extends DockTabStore { } async loadData(tabId: TabId) { + await this.whenReady; + await Promise.all([ this.loadValues(tabId), this.loadVersions(tabId), @@ -73,7 +75,7 @@ export class UpgradeChartStore extends DockTabStore { } @action - async loadVersions(tabId: TabId) { + private async loadVersions(tabId: TabId) { try { const { releaseName } = this.getData(tabId); @@ -87,7 +89,7 @@ export class UpgradeChartStore extends DockTabStore { } @action - async loadValues(tabId: TabId, { forceReload = false } = {}) { + private async loadValues(tabId: TabId, { forceReload = false } = {}) { if (this.hasValues(tabId) && !forceReload) { return; }