diff --git a/package.json b/package.json index d063ee7935..590a597b30 100644 --- a/package.json +++ b/package.json @@ -218,11 +218,11 @@ "@hapi/subtext": "^7.0.4", "@kubernetes/client-node": "^0.17.1", "@material-ui/styles": "^4.11.5", - "@ogre-tools/fp": "^11.0.0", - "@ogre-tools/injectable": "^11.0.0", - "@ogre-tools/injectable-extension-for-auto-registration": "^11.0.0", - "@ogre-tools/injectable-extension-for-mobx": "^11.0.0", - "@ogre-tools/injectable-react": "^11.0.0", + "@ogre-tools/fp": "^12.0.1", + "@ogre-tools/injectable": "^12.0.1", + "@ogre-tools/injectable-extension-for-auto-registration": "^12.0.1", + "@ogre-tools/injectable-extension-for-mobx": "^12.0.1", + "@ogre-tools/injectable-react": "^12.0.1", "@sentry/electron": "^3.0.8", "@sentry/integrations": "^6.19.3", "@side/jest-runtime": "^1.0.1", diff --git a/src/features/helm-charts/child-features/preferences/renderer/active-helm-repositories.injectable.ts b/src/features/helm-charts/child-features/preferences/renderer/active-helm-repositories.injectable.ts index f88e605bbe..7a0d5e6b47 100644 --- a/src/features/helm-charts/child-features/preferences/renderer/active-helm-repositories.injectable.ts +++ b/src/features/helm-charts/child-features/preferences/renderer/active-helm-repositories.injectable.ts @@ -16,26 +16,34 @@ const activeHelmRepositoriesInjectable = getInjectable({ instantiate: (di) => { const requestFromChannel = di.inject(requestFromChannelInjectionToken); const showErrorNotification = di.inject(showErrorNotificationInjectable); - const helmRepositoriesErrorState = di.inject(helmRepositoriesErrorStateInjectable); + const helmRepositoriesErrorState = di.inject( + helmRepositoriesErrorStateInjectable, + ); - return asyncComputed(async () => { - const result = await requestFromChannel(getActiveHelmRepositoriesChannel); - - if (result.callWasSuccessful) { - return result.response; - } else { - showErrorNotification(result.error); - - runInAction(() => - helmRepositoriesErrorState.set({ - controlsAreShown: false, - errorMessage: result.error, - }), + return asyncComputed({ + getValueFromObservedPromise: async () => { + const result = await requestFromChannel( + getActiveHelmRepositoriesChannel, ); - return []; - } - }, []); + if (result.callWasSuccessful) { + return result.response; + } else { + showErrorNotification(result.error); + + runInAction(() => + helmRepositoriesErrorState.set({ + controlsAreShown: false, + errorMessage: result.error, + }), + ); + + return []; + } + }, + + valueWhenPending: [], + }); }, }); diff --git a/src/features/helm-charts/child-features/preferences/renderer/adding-of-public-helm-repository/public-helm-repositories/public-helm-repositories.injectable.ts b/src/features/helm-charts/child-features/preferences/renderer/adding-of-public-helm-repository/public-helm-repositories/public-helm-repositories.injectable.ts index 08556af71c..4c32ff7154 100644 --- a/src/features/helm-charts/child-features/preferences/renderer/adding-of-public-helm-repository/public-helm-repositories/public-helm-repositories.injectable.ts +++ b/src/features/helm-charts/child-features/preferences/renderer/adding-of-public-helm-repository/public-helm-repositories/public-helm-repositories.injectable.ts @@ -12,9 +12,10 @@ const publicHelmRepositoriesInjectable = getInjectable({ instantiate: (di) => { const callForPublicHelmRepositories = di.inject(callForPublicHelmRepositoriesInjectable); - return asyncComputed(async () => { - return await callForPublicHelmRepositories(); - }, []); + return asyncComputed({ + getValueFromObservedPromise: callForPublicHelmRepositories, + valueWhenPending: [], + }); }, }); diff --git a/src/renderer/components/+helm-charts/details/readme-of-selected-helm-chart.injectable.ts b/src/renderer/components/+helm-charts/details/readme-of-selected-helm-chart.injectable.ts index 9b639beca2..839493bed3 100644 --- a/src/renderer/components/+helm-charts/details/readme-of-selected-helm-chart.injectable.ts +++ b/src/renderer/components/+helm-charts/details/readme-of-selected-helm-chart.injectable.ts @@ -12,22 +12,29 @@ const readmeOfSelectedHelmChartInjectable = getInjectable({ id: "readme-of-selected-helm-chart", instantiate: (di, chart: HelmChart) => { - const selection = di.inject(helmChartDetailsVersionSelectionInjectable, chart); + const selection = di.inject( + helmChartDetailsVersionSelectionInjectable, + chart, + ); const requestHelmChartReadme = di.inject(requestHelmChartReadmeInjectable); - return asyncComputed(async () => { - const chartVersion = selection.value.get(); + return asyncComputed({ + getValueFromObservedPromise: async () => { + const chartVersion = selection.value.get(); - if (!chartVersion) { - return ""; - } + if (!chartVersion) { + return ""; + } - return await requestHelmChartReadme( - chartVersion.getRepository(), - chartVersion.getName(), - chartVersion.getVersion(), - ); - }, ""); + return await requestHelmChartReadme( + chartVersion.getRepository(), + chartVersion.getName(), + chartVersion.getVersion(), + ); + }, + + valueWhenPending: "", + }); }, lifecycle: lifecycleEnum.keyedSingleton({ diff --git a/src/renderer/components/+helm-charts/details/versions-of-selected-helm-chart.injectable.ts b/src/renderer/components/+helm-charts/details/versions-of-selected-helm-chart.injectable.ts index 290fc90b65..ad7ca9b983 100644 --- a/src/renderer/components/+helm-charts/details/versions-of-selected-helm-chart.injectable.ts +++ b/src/renderer/components/+helm-charts/details/versions-of-selected-helm-chart.injectable.ts @@ -11,13 +11,16 @@ const versionsOfSelectedHelmChartInjectable = getInjectable({ id: "versions-of-selected-helm-chart", instantiate: (di, chart: HelmChart) => { - const requestHelmChartVersions = di.inject(requestHelmChartVersionsInjectable); - - return asyncComputed( - async () => - await requestHelmChartVersions(chart.getRepository(), chart.getName()), - [], + const requestHelmChartVersions = di.inject( + requestHelmChartVersionsInjectable, ); + + return asyncComputed({ + getValueFromObservedPromise: async () => + await requestHelmChartVersions(chart.getRepository(), chart.getName()), + + valueWhenPending: [], + }); }, lifecycle: lifecycleEnum.keyedSingleton({ diff --git a/src/renderer/components/+helm-charts/helm-charts/helm-charts.injectable.ts b/src/renderer/components/+helm-charts/helm-charts/helm-charts.injectable.ts index af9c02363d..70c900dc7b 100644 --- a/src/renderer/components/+helm-charts/helm-charts/helm-charts.injectable.ts +++ b/src/renderer/components/+helm-charts/helm-charts/helm-charts.injectable.ts @@ -12,7 +12,10 @@ const helmChartsInjectable = getInjectable({ instantiate: (di) => { const requestHelmCharts = di.inject(requestHelmChartsInjectable); - return asyncComputed(async () => await requestHelmCharts(), []); + return asyncComputed({ + getValueFromObservedPromise: requestHelmCharts, + valueWhenPending: [], + }); }, }); diff --git a/src/renderer/components/+helm-charts/helm-charts/versions.injectable.ts b/src/renderer/components/+helm-charts/helm-charts/versions.injectable.ts index db06423ea5..ab93170ae0 100644 --- a/src/renderer/components/+helm-charts/helm-charts/versions.injectable.ts +++ b/src/renderer/components/+helm-charts/helm-charts/versions.injectable.ts @@ -11,16 +11,25 @@ import requestVersionsOfHelmChartInjectable from "./request-versions-of-chart-fo const helmChartVersionsInjectable = getInjectable({ id: "helm-chart-versions-loader", + instantiate: (di, release) => { const helmCharts = di.inject(helmChartsInjectable); - const requestVersionsOfHelmChart = di.inject(requestVersionsOfHelmChartInjectable); - return asyncComputed(async () => { - await when(() => !helmCharts.pending.get()); + const requestVersionsOfHelmChart = di.inject( + requestVersionsOfHelmChartInjectable, + ); - return requestVersionsOfHelmChart(release, helmCharts.value.get()); - }, []); + return asyncComputed({ + getValueFromObservedPromise: async () => { + await when(() => !helmCharts.pending.get()); + + return requestVersionsOfHelmChart(release, helmCharts.value.get()); + }, + + valueWhenPending: [], + }); }, + lifecycle: lifecycleEnum.keyedSingleton({ getInstanceKey: (di, release: HelmRelease) => release.getName(), }), diff --git a/src/renderer/components/+helm-releases/releases.injectable.ts b/src/renderer/components/+helm-releases/releases.injectable.ts index eecd2c0153..ed3d8d6b8e 100644 --- a/src/renderer/components/+helm-releases/releases.injectable.ts +++ b/src/renderer/components/+helm-releases/releases.injectable.ts @@ -18,16 +18,23 @@ const releasesInjectable = getInjectable({ const requestHelmReleases = di.inject(requestHelmReleasesInjectable); const toHelmRelease = di.inject(toHelmReleaseInjectable); - return asyncComputed(async () => { - void releaseSecrets.get(); + return asyncComputed({ + getValueFromObservedPromise: async () => { + void releaseSecrets.get(); - const releaseArrays = await (clusterContext.hasSelectedAll - ? requestHelmReleases() - : Promise.all(clusterContext.contextNamespaces.map(namespace => requestHelmReleases(namespace))) - ); + const releaseArrays = await (clusterContext.hasSelectedAll + ? requestHelmReleases() + : Promise.all( + clusterContext.contextNamespaces.map((namespace) => + requestHelmReleases(namespace), + ), + )); - return releaseArrays.flat().map(toHelmRelease); - }, []); + return releaseArrays.flat().map(toHelmRelease); + }, + + valueWhenPending: [], + }); }, }); diff --git a/src/renderer/components/dock/upgrade-chart/upgrade-chart-model.injectable.ts b/src/renderer/components/dock/upgrade-chart/upgrade-chart-model.injectable.ts index 41d414be25..572fa1be76 100644 --- a/src/renderer/components/dock/upgrade-chart/upgrade-chart-model.injectable.ts +++ b/src/renderer/components/dock/upgrade-chart/upgrade-chart-model.injectable.ts @@ -54,12 +54,19 @@ const upgradeChartModelInjectable = getInjectable({ && release.getNs() === tabData.releaseNamespace )) )); + const versions = di.inject(helmChartVersionsInjectable, release); - const storedConfiguration = asyncComputed(() => requestHelmReleaseConfiguration( - release.getName(), - release.getNs(), - true, - ), ""); + + const storedConfiguration = asyncComputed({ + getValueFromObservedPromise: () => + requestHelmReleaseConfiguration( + release.getName(), + release.getNs(), + true, + ), + + valueWhenPending: "", + }); await when(() => !versions.pending.get()); diff --git a/src/renderer/extension-loader/extension-should-be-enabled-for-cluster-frame.injectable.ts b/src/renderer/extension-loader/extension-should-be-enabled-for-cluster-frame.injectable.ts index 24c75f4d30..b633b00d05 100644 --- a/src/renderer/extension-loader/extension-should-be-enabled-for-cluster-frame.injectable.ts +++ b/src/renderer/extension-loader/extension-should-be-enabled-for-cluster-frame.injectable.ts @@ -22,22 +22,19 @@ const extensionShouldBeEnabledForClusterFrameInjectable = getInjectable({ ) => untracked(() => di.inject(extensionIsEnabledForClusterInjectable, { extension, cluster })); - return asyncComputed( - async () => { + return asyncComputed({ + getValueFromObservedPromise: async () => { const cluster = activeKubernetesCluster.get(); if (!cluster) { return false; } - return getExtensionIsEnabledForCluster( - extension, - cluster, - ); + return getExtensionIsEnabledForCluster(extension, cluster); }, - false, - ); + valueWhenPending: false, + }); }, lifecycle: lifecycleEnum.keyedSingleton({ diff --git a/src/renderer/getDiForUnitTesting.tsx b/src/renderer/getDiForUnitTesting.tsx index d0431516e7..8f9e72c167 100644 --- a/src/renderer/getDiForUnitTesting.tsx +++ b/src/renderer/getDiForUnitTesting.tsx @@ -118,7 +118,7 @@ export const getDiForUnitTesting = ( // TODO: Remove after "LensRendererExtension.isEnabledForCluster" is removed di.override(extensionShouldBeEnabledForClusterFrameInjectable, () => - asyncComputed(async () => true, true), + asyncComputed({ getValueFromObservedPromise: async () => true, valueWhenPending: true }), ); // TODO: Remove side-effects and shared global state diff --git a/yarn.lock b/yarn.lock index ed5b4d08e9..8e922dac32 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1408,47 +1408,30 @@ read-package-json-fast "^2.0.3" which "^2.0.2" -"@ogre-tools/fp@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@ogre-tools/fp/-/fp-11.0.0.tgz#b448079014319cf43284a2de5e4cb883bf73aed3" - integrity sha512-mmpuPzITVQ1iHTAHPVdZqqs2Z1p1vx6hTxoSQ4TUOpzfFoW1AzDGlm1r9eWHuqjRSvMt5GpkB3qp1Rbz68zBkA== - dependencies: - lodash "^4.17.21" +"@ogre-tools/fp@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@ogre-tools/fp/-/fp-12.0.1.tgz#1f932c8c4cc04075f92ab5ca564db158ac1514d4" + integrity sha512-BzMhkI4wPnuI+hXJDbtHUXQn/uBjJLx3W0oDaIFV+lLpkneUU0oW9D5uZFHNOouzCgf67/tnmUC6Ohevbr7/VA== -"@ogre-tools/injectable-extension-for-auto-registration@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@ogre-tools/injectable-extension-for-auto-registration/-/injectable-extension-for-auto-registration-11.0.0.tgz#3cdf174e54ea0793ed7acfe9bcda3d47c2ebc61d" - integrity sha512-48snZo7pZbghtZWlCzuulw0BHZQzSKVeUN1VEjAEtwjFTqiABQigzY6hkh6owXAQdsIniuPWEdCDBGXDClASbQ== - dependencies: - "@ogre-tools/fp" "^11.0.0" - "@ogre-tools/injectable" "^11.0.0" - lodash "^4.17.21" +"@ogre-tools/injectable-extension-for-auto-registration@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@ogre-tools/injectable-extension-for-auto-registration/-/injectable-extension-for-auto-registration-12.0.1.tgz#878f73b5408b12193664f4920289905eacb4c1cc" + integrity sha512-itKcxEJ/J8SKGD/Wwj0UYOA+/nqwnrwanhikY6qhlibj8guujX77Iip7vMBzJFc2nIrRaQRcpNV2eXe+tjQUdg== -"@ogre-tools/injectable-extension-for-mobx@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@ogre-tools/injectable-extension-for-mobx/-/injectable-extension-for-mobx-11.0.0.tgz#9087054d5bfd7efff15158dfd04d16f8cdfbdfb9" - integrity sha512-yiTbE5wRKn7zkRj1kXFswrDMwMkdj6XNbQTuaP2aAPDdJ01Iff2FgdBXxYXL1ZzHVFbdSL2WvFnsZdXPUow9LQ== - dependencies: - "@ogre-tools/fp" "^11.0.0" - "@ogre-tools/injectable" "^11.0.0" - lodash "^4.17.21" +"@ogre-tools/injectable-extension-for-mobx@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@ogre-tools/injectable-extension-for-mobx/-/injectable-extension-for-mobx-12.0.1.tgz#1e9de8caba076d7cebda4177a5ab763594b08b28" + integrity sha512-M1penOpZfO3/rJMb6WN4IL86p9Lx9tOMCipiNkAyitNLGWfeDPG279JlCs9E3Uw8R9nkFPiw8Je2SLnwnM9o+A== -"@ogre-tools/injectable-react@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@ogre-tools/injectable-react/-/injectable-react-11.0.0.tgz#67e68a1404a497cd0265490dd869dea13d60717a" - integrity sha512-rQdO4RRgPPAGKOVP6JQopYMsTOUdXnwtONPGRy3M5BiHLeP//xQH9NKGjU44IHSorc3IsDk6hHttDgmP79xdzw== - dependencies: - "@ogre-tools/fp" "^11.0.0" - "@ogre-tools/injectable" "^11.0.0" - lodash "^4.17.21" +"@ogre-tools/injectable-react@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@ogre-tools/injectable-react/-/injectable-react-12.0.1.tgz#07a43f25bd78db37cb2c00bc0c06e0a69394f519" + integrity sha512-LAOh/EHKqk/pQcBRZUAz0VcJwgBeIPxHwlV/Apw0aEBBoMuYLsLZh47rES8sMYMV6N5x7oVfkjMscujY0DCgaQ== -"@ogre-tools/injectable@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@ogre-tools/injectable/-/injectable-11.0.0.tgz#43112e6bdeb8e52ac39aea86200fc9697a46fbc0" - integrity sha512-kefX6Nv81tuy6cG/veZmt+XRzNft4BJBnlHlosisvcbdxRt8wkJg3sv2ud9gtJsW0LBtmvMf0SThdpayrFa+sQ== - dependencies: - "@ogre-tools/fp" "^11.0.0" - lodash "^4.17.21" +"@ogre-tools/injectable@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@ogre-tools/injectable/-/injectable-12.0.1.tgz#53f9981f7f165da4277857b8338cc4097d357ad2" + integrity sha512-uOx8STN2wSc9hknDSTGqViyR89Vwg7rGacwrVNchgyo48/QJsmZZz6cd1Aw3nT4vr7ekjTc2lh0Rz6zGIv47hg== "@pmmmwh/react-refresh-webpack-plugin@^0.5.8": version "0.5.8"