mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Fix helm release data being stale after reopening details
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
df1b947870
commit
221570503b
@ -11,6 +11,7 @@ import { Link } from "react-router-dom";
|
|||||||
import { DrawerItem, DrawerTitle } from "../../drawer";
|
import { DrawerItem, DrawerTitle } from "../../drawer";
|
||||||
import { stopPropagation } from "../../../utils";
|
import { stopPropagation } from "../../../utils";
|
||||||
import { observer } from "mobx-react";
|
import { observer } from "mobx-react";
|
||||||
|
import type { IAsyncComputed } from "@ogre-tools/injectable-react";
|
||||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||||
import type { ConfigurationInput, MinimalResourceGroup, OnlyUserSuppliedValuesAreShownToggle, ReleaseDetailsModel } from "./release-details-model/release-details-model.injectable";
|
import type { ConfigurationInput, MinimalResourceGroup, OnlyUserSuppliedValuesAreShownToggle, ReleaseDetailsModel } from "./release-details-model/release-details-model.injectable";
|
||||||
import releaseDetailsModelInjectable from "./release-details-model/release-details-model.injectable";
|
import releaseDetailsModelInjectable from "./release-details-model/release-details-model.injectable";
|
||||||
@ -29,10 +30,16 @@ interface ReleaseDetailsContentProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
model: ReleaseDetailsModel;
|
computedModel: IAsyncComputed<ReleaseDetailsModel>;
|
||||||
}
|
}
|
||||||
|
|
||||||
const NonInjectedReleaseDetailsContent = observer(({ model }: Dependencies & ReleaseDetailsContentProps) => {
|
const NonInjectedReleaseDetailsContent = observer(({ computedModel }: Dependencies & ReleaseDetailsContentProps) => {
|
||||||
|
const model = computedModel.value.get();
|
||||||
|
|
||||||
|
if (!model) {
|
||||||
|
return <Spinner center data-testid="helm-release-detail-content-spinner" />;
|
||||||
|
}
|
||||||
|
|
||||||
const loadingError = model.loadingError.get();
|
const loadingError = model.loadingError.get();
|
||||||
|
|
||||||
if (loadingError) {
|
if (loadingError) {
|
||||||
@ -110,11 +117,9 @@ const NonInjectedReleaseDetailsContent = observer(({ model }: Dependencies & Rel
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const ReleaseDetailsContent = withInjectables<Dependencies, ReleaseDetailsContentProps>(NonInjectedReleaseDetailsContent, {
|
export const ReleaseDetailsContent = withInjectables<Dependencies, ReleaseDetailsContentProps>(NonInjectedReleaseDetailsContent, {
|
||||||
getPlaceholder: () => <Spinner center data-testid="helm-release-detail-content-spinner" />,
|
getProps: (di, props) => ({
|
||||||
|
|
||||||
getProps: async (di, props) => ({
|
|
||||||
model: await di.inject(releaseDetailsModelInjectable, props.targetRelease),
|
|
||||||
...props,
|
...props,
|
||||||
|
computedModel: di.inject(releaseDetailsModelInjectable, props.targetRelease),
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -31,11 +31,12 @@ import assert from "assert";
|
|||||||
import activeThemeInjectable from "../../../../themes/active.injectable";
|
import activeThemeInjectable from "../../../../themes/active.injectable";
|
||||||
import type { ToHelmRelease } from "../../to-helm-release.injectable";
|
import type { ToHelmRelease } from "../../to-helm-release.injectable";
|
||||||
import toHelmReleaseInjectable from "../../to-helm-release.injectable";
|
import toHelmReleaseInjectable from "../../to-helm-release.injectable";
|
||||||
|
import { asyncComputed } from "@ogre-tools/injectable-react";
|
||||||
|
|
||||||
const releaseDetailsModelInjectable = getInjectable({
|
const releaseDetailsModelInjectable = getInjectable({
|
||||||
id: "release-details-model",
|
id: "release-details-model",
|
||||||
|
|
||||||
instantiate: async (di, targetRelease: TargetHelmRelease) => {
|
instantiate: (di, targetRelease: TargetHelmRelease) => {
|
||||||
const model = new ReleaseDetailsModel({
|
const model = new ReleaseDetailsModel({
|
||||||
requestDetailedHelmRelease: di.inject(requestDetailedHelmReleaseInjectable),
|
requestDetailedHelmRelease: di.inject(requestDetailedHelmReleaseInjectable),
|
||||||
targetRelease,
|
targetRelease,
|
||||||
@ -50,9 +51,14 @@ const releaseDetailsModelInjectable = getInjectable({
|
|||||||
toHelmRelease: di.inject(toHelmReleaseInjectable),
|
toHelmRelease: di.inject(toHelmReleaseInjectable),
|
||||||
});
|
});
|
||||||
|
|
||||||
await model.load();
|
return asyncComputed({
|
||||||
|
getValueFromObservedPromise: async () => {
|
||||||
|
await model.load();
|
||||||
|
|
||||||
return model;
|
return model;
|
||||||
|
},
|
||||||
|
betweenUpdates: "show-latest-value",
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
lifecycle: lifecycleEnum.keyedSingleton({
|
lifecycle: lifecycleEnum.keyedSingleton({
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user