From b9cee0cbc7a34332af4c208f40d92bdb0f948a70 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Tue, 12 Oct 2021 08:30:46 -0400 Subject: [PATCH] Fix HelmChartDetails and HelmReleaseDetails Menu (#3986) --- .../+apps-helm-charts/helm-chart-details.tsx | 44 ++++++++++--------- .../+apps-releases/release-menu.tsx | 1 + 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/renderer/components/+apps-helm-charts/helm-chart-details.tsx b/src/renderer/components/+apps-helm-charts/helm-chart-details.tsx index 041f7b1cbd..72a6f1ea34 100644 --- a/src/renderer/components/+apps-helm-charts/helm-chart-details.tsx +++ b/src/renderer/components/+apps-helm-charts/helm-chart-details.tsx @@ -23,8 +23,8 @@ import "./helm-chart-details.scss"; import React, { Component } from "react"; import { getChartDetails, HelmChart } from "../../../common/k8s-api/endpoints/helm-charts.api"; -import { observable, autorun, makeObservable } from "mobx"; -import { observer } from "mobx-react"; +import { observable, makeObservable, reaction } from "mobx"; +import { disposeOnUnmount, observer } from "mobx-react"; import { Drawer, DrawerItem } from "../drawer"; import { boundMethod, stopPropagation } from "../../utils"; import { MarkdownViewer } from "../markdown-viewer"; @@ -64,20 +64,24 @@ export class HelmChartDetails extends Component { this.abortController?.abort(); } - chartUpdater = autorun(() => { - this.selectedChart = null; - const { chart: { name, repo, version } } = this.props; + componentDidMount() { + disposeOnUnmount(this, [ + reaction(() => this.props.chart, async ({ name, repo, version }) => { + try { + const { readme, versions } = await getChartDetails(repo, name, { version }); - getChartDetails(repo, name, { version }) - .then(result => { - this.readme = result.readme; - this.chartVersions = result.versions; - this.selectedChart = result.versions[0]; - }) - .catch(error => { - this.error = error; - }); - }); + this.readme = readme; + this.chartVersions = versions; + this.selectedChart = versions[0]; + } catch (error) { + this.error = error; + this.selectedChart = null; + } + }, { + fireImmediately: true, + }), + ]); + } @boundMethod async onVersionChange({ value: chart }: SelectOption) { @@ -135,7 +139,7 @@ export class HelmChartDetails extends Component { value: chart, }))} isOptionDisabled={({ value: chart }) => chart.deprecated} - value={selectedChart.getVersion()} + value={selectedChart} onChange={onVersionChange} /> @@ -170,10 +174,6 @@ export class HelmChartDetails extends Component { } renderContent() { - if (!this.selectedChart) { - return ; - } - if (this.error) { return (
@@ -182,6 +182,10 @@ export class HelmChartDetails extends Component { ); } + if (!this.selectedChart) { + return ; + } + return (
{this.renderIntroduction()} diff --git a/src/renderer/components/+apps-releases/release-menu.tsx b/src/renderer/components/+apps-releases/release-menu.tsx index 0b8d4b8c91..a53298460f 100644 --- a/src/renderer/components/+apps-releases/release-menu.tsx +++ b/src/renderer/components/+apps-releases/release-menu.tsx @@ -79,6 +79,7 @@ export class HelmReleaseMenu extends React.Component { {...menuProps} className={cssNames("HelmReleaseMenu", className)} removeAction={this.remove} + removeConfirmationMessage={() =>

Remove Helm Release {release.name}?

} > {this.renderContent()}