From 7bcce5cb9878ca4343f6e71d65dbed26863e04d7 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Tue, 21 Feb 2023 16:19:07 -0500 Subject: [PATCH] Fix stale data - The behaviour of asyncComputed is to not redo the call on every change between UNOBSERVED and OBSERVED Signed-off-by: Sebastian Malton --- .../release-details-model.injectable.tsx | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/core/src/renderer/components/+helm-releases/release-details/release-details-model/release-details-model.injectable.tsx b/packages/core/src/renderer/components/+helm-releases/release-details/release-details-model/release-details-model.injectable.tsx index 3645d0301e..dc0eb0871e 100644 --- a/packages/core/src/renderer/components/+helm-releases/release-details/release-details-model/release-details-model.injectable.tsx +++ b/packages/core/src/renderer/components/+helm-releases/release-details/release-details-model/release-details-model.injectable.tsx @@ -32,11 +32,14 @@ import activeThemeInjectable from "../../../../themes/active.injectable"; import type { ToHelmRelease } from "../../to-helm-release.injectable"; import toHelmReleaseInjectable from "../../to-helm-release.injectable"; import { asyncComputed } from "@ogre-tools/injectable-react"; +import targetHelmReleaseInjectable from "../target-helm-release.injectable"; const releaseDetailsModelInjectable = getInjectable({ id: "release-details-model", instantiate: (di, targetRelease: TargetHelmRelease) => { + const detailsHelmRelease = di.inject(targetHelmReleaseInjectable); + const model = new ReleaseDetailsModel({ requestDetailedHelmRelease: di.inject(requestDetailedHelmReleaseInjectable), targetRelease, @@ -51,9 +54,17 @@ const releaseDetailsModelInjectable = getInjectable({ toHelmRelease: di.inject(toHelmReleaseInjectable), }); - return asyncComputed({ + return asyncComputed({ getValueFromObservedPromise: async () => { - await model.load(); + const currentHelmRelease = detailsHelmRelease.get(); + + if ( + currentHelmRelease + && currentHelmRelease.name === targetRelease.name + && currentHelmRelease.namespace === targetRelease.namespace + ) { + await model.load(); + } return model; },