diff --git a/src/common/front-end-routing/routes/cluster/helm/releases/navigate-to-helm-releases.injectable.ts b/src/common/front-end-routing/routes/cluster/helm/releases/navigate-to-helm-releases.injectable.ts index 77fae74011..3d9aebddf5 100644 --- a/src/common/front-end-routing/routes/cluster/helm/releases/navigate-to-helm-releases.injectable.ts +++ b/src/common/front-end-routing/routes/cluster/helm/releases/navigate-to-helm-releases.injectable.ts @@ -16,8 +16,7 @@ const navigateToHelmReleasesInjectable = getInjectable({ const navigateToRoute = di.inject(navigateToRouteInjectionToken); const route = di.inject(helmReleasesRouteInjectable); - return (parameters) => - navigateToRoute(route, { parameters }); + return (parameters) => navigateToRoute(route, { parameters }); }, }); diff --git a/src/features/helm-releases/__snapshots__/showing-details-for-helm-release.test.ts.snap b/src/features/helm-releases/__snapshots__/showing-details-for-helm-release.test.ts.snap index 192dfdcf68..ced68044ac 100644 --- a/src/features/helm-releases/__snapshots__/showing-details-for-helm-release.test.ts.snap +++ b/src/features/helm-releases/__snapshots__/showing-details-for-helm-release.test.ts.snap @@ -5388,8 +5388,7 @@ exports[`showing details for helm release given application is started when navi - NaNy - ago (some-updated) + NaNy ago (some-updated)
- NaNy - ago (some-updated) + NaNy ago (some-updated)
- NaNy - ago (some-updated) + NaNy ago (some-updated)
- NaNy - ago (some-updated) + NaNy ago (some-updated)
- NaNy - ago (some-updated) + NaNy ago (some-updated)
- NaNy - ago (some-updated) + NaNy ago (some-updated)
- Failed to load release + Failed to load release: + + some-error
diff --git a/src/main/helm/helm-service/get-helm-release-resources/call-for-helm-manifest/call-for-helm-manifest.injectable.ts b/src/main/helm/helm-service/get-helm-release-resources/call-for-helm-manifest/call-for-helm-manifest.injectable.ts index e23966d00d..960fb0f860 100644 --- a/src/main/helm/helm-service/get-helm-release-resources/call-for-helm-manifest/call-for-helm-manifest.injectable.ts +++ b/src/main/helm/helm-service/get-helm-release-resources/call-for-helm-manifest/call-for-helm-manifest.injectable.ts @@ -6,12 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable"; import type { AsyncResult } from "../../../../../common/utils/async-result"; import execHelmInjectable from "../../../exec-helm/exec-helm.injectable"; import yaml from "js-yaml"; - -export interface HelmResourceManifest { - metadata: { - namespace: string; - }; -} +import type { KubeJsonApiData } from "../../../../../common/k8s-api/kube-json-api"; const callForHelmManifestInjectable = getInjectable({ id: "call-for-helm-manifest", @@ -23,7 +18,7 @@ const callForHelmManifestInjectable = getInjectable({ name: string, namespace: string, kubeconfigPath: string, - ): Promise> => { + ): Promise> => { const result = await execHelm( "get", "manifest", @@ -42,7 +37,7 @@ const callForHelmManifestInjectable = getInjectable({ callWasSuccessful: true, response: yaml .loadAll(result.response) - .filter((manifest) => !!manifest) as HelmResourceManifest[], + .filter((manifest) => !!manifest) as KubeJsonApiData[], }; }; diff --git a/src/main/helm/helm-service/get-helm-release-resources/call-for-kube-resources-by-manifest/call-for-kube-resources-by-manifest.injectable.ts b/src/main/helm/helm-service/get-helm-release-resources/call-for-kube-resources-by-manifest/call-for-kube-resources-by-manifest.injectable.ts index c530c98385..71a38abf6b 100644 --- a/src/main/helm/helm-service/get-helm-release-resources/call-for-kube-resources-by-manifest/call-for-kube-resources-by-manifest.injectable.ts +++ b/src/main/helm/helm-service/get-helm-release-resources/call-for-kube-resources-by-manifest/call-for-kube-resources-by-manifest.injectable.ts @@ -10,13 +10,13 @@ import execFileWithInputInjectable from "./exec-file-with-input/exec-file-with-i import { getErrorMessage } from "../../../../../common/utils/get-error-message"; import { map } from "lodash/fp"; import { pipeline } from "@ogre-tools/fp"; -import type { HelmResourceManifest } from "../call-for-helm-manifest/call-for-helm-manifest.injectable"; +import type { KubeJsonApiData } from "../../../../../common/k8s-api/kube-json-api"; export type CallForKubeResourcesByManifest = ( namespace: string, kubeconfigPath: string, kubectlPath: string, - resourceManifests: HelmResourceManifest[] + resourceManifests: KubeJsonApiData[] ) => Promise; const callForKubeResourcesByManifestInjectable = getInjectable({ diff --git a/src/renderer/components/+helm-releases/release-details/release-details-content.tsx b/src/renderer/components/+helm-releases/release-details/release-details-content.tsx index df183ff601..b2bacbd479 100644 --- a/src/renderer/components/+helm-releases/release-details/release-details-content.tsx +++ b/src/renderer/components/+helm-releases/release-details/release-details-content.tsx @@ -34,10 +34,16 @@ interface Dependencies { } const NonInjectedReleaseDetailsContent = observer(({ model }: Dependencies & ReleaseDetailsContentProps) => { - const failedToLoad = model.failedToLoad.get(); + const loadingError = model.loadingError.get(); - if (failedToLoad) { - return
Failed to load release
; + if (loadingError) { + return ( +
+ Failed to load release: + {" "} + {loadingError} +
+ ); } @@ -58,8 +64,7 @@ const NonInjectedReleaseDetailsContent = observer(({ model }: Dependencies & Rel - {model.release.getUpdated()} - {` ago (${model.release.updated})`} + {`${model.release.getUpdated()} ago (${model.release.updated})`} {model.release.getNs()} diff --git a/src/renderer/components/+helm-releases/release-details/release-details-drawer-toolbar.tsx b/src/renderer/components/+helm-releases/release-details/release-details-drawer-toolbar.tsx index 5336ffbb25..cb7d5009ec 100644 --- a/src/renderer/components/+helm-releases/release-details/release-details-drawer-toolbar.tsx +++ b/src/renderer/components/+helm-releases/release-details/release-details-drawer-toolbar.tsx @@ -21,19 +21,23 @@ interface ReleaseDetailsDrawerProps { interface Dependencies { model: ReleaseDetailsModel; - closeDrawer: () => void; + navigateToHelmReleases: () => void; } -const NonInjectedReleaseDetailsDrawerToolbar = observer( - ({ model, closeDrawer }: Dependencies & ReleaseDetailsDrawerProps) => - model.failedToLoad.get() ? null : ( +const NonInjectedReleaseDetailsDrawerToolbar = observer(({ + model, + navigateToHelmReleases, +}: Dependencies & ReleaseDetailsDrawerProps) => ( + model.loadingError.get() + ? null + : ( - ), -); + ) +)); export const ReleaseDetailsDrawerToolbar = withInjectables< Dependencies, @@ -43,7 +47,7 @@ export const ReleaseDetailsDrawerToolbar = withInjectables< getProps: async (di, props) => ({ model: await di.inject(releaseDetailsModelInjectable, props.targetRelease), - closeDrawer: di.inject(navigateToHelmReleasesInjectable), + navigateToHelmReleases: di.inject(navigateToHelmReleasesInjectable), ...props, }), }); diff --git a/src/renderer/components/+helm-releases/release-details/release-details-model/release-details-model.injectable.tsx b/src/renderer/components/+helm-releases/release-details/release-details-model/release-details-model.injectable.tsx index 0ccf416f4a..ebedbcdcdf 100644 --- a/src/renderer/components/+helm-releases/release-details/release-details-model/release-details-model.injectable.tsx +++ b/src/renderer/components/+helm-releases/release-details/release-details-model/release-details-model.injectable.tsx @@ -54,7 +54,7 @@ const releaseDetailsModelInjectable = getInjectable({ showCheckedErrorNotification, showSuccessNotification, createUpgradeChartTab, - closeDrawer: navigateToHelmReleases, + navigateToHelmReleases, }); await model.load(); @@ -63,47 +63,46 @@ const releaseDetailsModelInjectable = getInjectable({ }, lifecycle: lifecycleEnum.keyedSingleton({ - getInstanceKey: (di, release: TargetHelmRelease) => - `${release.namespace}/${release.name}`, + getInstanceKey: (di, release: TargetHelmRelease) => `${release.namespace}/${release.name}`, }), }); export default releaseDetailsModelInjectable; export interface OnlyUserSuppliedValuesAreShownToggle { - value: IObservableValue; + readonly value: IObservableValue; toggle: () => Promise; } export interface ConfigurationInput { - nonSavedValue: IObservableValue; - isLoading: IObservableValue; - isSaving: IObservableValue; + readonly nonSavedValue: IObservableValue; + readonly isLoading: IObservableValue; + readonly isSaving: IObservableValue; onChange: (value: string) => void; save: () => Promise; } interface Dependencies { + readonly targetRelease: TargetHelmRelease; + readonly activeTheme: IComputedValue; callForHelmRelease: CallForHelmRelease; - targetRelease: TargetHelmRelease; - activeTheme: IComputedValue; callForHelmReleaseConfiguration: CallForHelmReleaseConfiguration; getResourceDetailsUrl: GetResourceDetailsUrl; updateRelease: CallForHelmReleaseUpdate; showCheckedErrorNotification: ShowCheckedErrorNotification; showSuccessNotification: ShowNotification; createUpgradeChartTab: (release: HelmRelease) => string; - closeDrawer: () => void; + navigateToHelmReleases: () => void; } export class ReleaseDetailsModel { - id = `${this.dependencies.targetRelease.namespace}/${this.dependencies.targetRelease.name}`; + readonly id = `${this.dependencies.targetRelease.namespace}/${this.dependencies.targetRelease.name}`; - constructor(private dependencies: Dependencies) {} + constructor(private readonly dependencies: Dependencies) {} - private detailedRelease = observable.box(); + private readonly detailedRelease = observable.box(); - readonly failedToLoad = observable.box(false); + readonly loadingError = observable.box(); readonly configuration: ConfigurationInput = { nonSavedValue: observable.box(""), @@ -179,7 +178,7 @@ export class ReleaseDetailsModel { if (!result.callWasSuccessful) { runInAction(() => { - this.failedToLoad.set(true); + this.loadingError.set(result.error); }); return; @@ -257,13 +256,13 @@ export class ReleaseDetailsModel { } close = () => { - this.dependencies.closeDrawer(); + this.dependencies.navigateToHelmReleases(); }; startUpgradeProcess = () => { this.dependencies.createUpgradeChartTab(this.release); - this.dependencies.closeDrawer(); + this.dependencies.navigateToHelmReleases(); }; }