diff --git a/package.json b/package.json index 9481180e55..7f0acb3181 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "productName": "OpenLens", "description": "OpenLens - Open Source IDE for Kubernetes", "homepage": "https://github.com/lensapp/lens", - "version": "6.1.18", + "version": "6.1.19", "main": "static/build/main.js", "copyright": "© 2022 OpenLens Authors", "license": "MIT", @@ -376,7 +376,7 @@ "css-loader": "^6.7.1", "deepdash": "^5.3.9", "dompurify": "^2.4.0", - "electron": "^19.1.4", + "electron": "^19.1.5", "electron-builder": "^23.6.0", "electron-notarize": "^0.3.0", "esbuild": "^0.15.7", diff --git a/src/common/k8s-api/endpoints/cron-job.api.injectable.ts b/src/common/k8s-api/endpoints/cron-job.api.injectable.ts index a22909861e..252dcd624e 100644 --- a/src/common/k8s-api/endpoints/cron-job.api.injectable.ts +++ b/src/common/k8s-api/endpoints/cron-job.api.injectable.ts @@ -13,7 +13,12 @@ const cronJobApiInjectable = getInjectable({ instantiate: (di) => { assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "cronJobApi is only available in certain environments"); - return new CronJobApi(); + return new CronJobApi({ + fallbackApiBases: [ + "/apis/batch/v1beta1/cronjobs", + ], + checkPreferredVersion: true, + }); }, injectionToken: kubeApiInjectionToken, diff --git a/src/common/k8s-api/endpoints/cron-job.api.ts b/src/common/k8s-api/endpoints/cron-job.api.ts index 131b632589..7dad6a857d 100644 --- a/src/common/k8s-api/endpoints/cron-job.api.ts +++ b/src/common/k8s-api/endpoints/cron-job.api.ts @@ -73,7 +73,7 @@ export class CronJob extends KubeObject< > { static readonly kind = "CronJob"; static readonly namespaced = true; - static readonly apiBase = "/apis/batch/v1beta1/cronjobs"; + static readonly apiBase = "/apis/batch/v1/cronjobs"; getSuspendFlag() { return (this.spec.suspend ?? false).toString(); diff --git a/src/common/k8s-api/kube-object.store.ts b/src/common/k8s-api/kube-object.store.ts index 0856176a59..32a762a74c 100644 --- a/src/common/k8s-api/kube-object.store.ts +++ b/src/common/k8s-api/kube-object.store.ts @@ -7,7 +7,7 @@ import type { ClusterContext } from "./cluster-context"; import { action, computed, makeObservable, observable, reaction, when } from "mobx"; import type { Disposer } from "../utils"; -import { waitUntilDefined, autoBind, includes, isRequestError, noop, rejectPromiseBy } from "../utils"; +import { waitUntilDefined, autoBind, includes, noop, rejectPromiseBy } from "../utils"; import type { KubeJsonApiDataFor, KubeObject } from "./kube-object"; import { KubeStatus } from "./kube-object"; import type { IKubeWatchEvent } from "./kube-watch-event"; @@ -221,11 +221,7 @@ export abstract class KubeObjectStore< try { return await res ?? []; } catch (error) { - onLoadFailure(( - isRequestError(error) - ? error.message || error.toString() - : "Unknown error" - )); + onLoadFailure(String(error)); // reset the store because we are loading all, so that nothing is displayed this.items.clear(); diff --git a/src/main/utils/shell-env/compute-unix-shell-environment.injectable.ts b/src/main/utils/shell-env/compute-unix-shell-environment.injectable.ts index 652556bcb5..d6e642dc17 100644 --- a/src/main/utils/shell-env/compute-unix-shell-environment.injectable.ts +++ b/src/main/utils/shell-env/compute-unix-shell-environment.injectable.ts @@ -105,6 +105,7 @@ const computeUnixShellEnvironmentInjectable = getInjectable({ return new Promise((resolve) => { const shellProcess = spawn(shellPath, shellArgs, { signal: opts.signal, + detached: true, env, }); const stdout: Buffer[] = []; diff --git a/src/renderer/components/+workloads-cronjobs/cronjobs.tsx b/src/renderer/components/+workloads-cronjobs/cronjobs.tsx index f6c13ba6c0..24eff99303 100644 --- a/src/renderer/components/+workloads-cronjobs/cronjobs.tsx +++ b/src/renderer/components/+workloads-cronjobs/cronjobs.tsx @@ -7,14 +7,18 @@ import "./cronjobs.scss"; import React from "react"; import { observer } from "mobx-react"; -import { cronJobStore } from "./legacy-store"; -import { jobStore } from "../+workloads-jobs/legacy-store"; -import { eventStore } from "../+events/legacy-store"; import { KubeObjectListLayout } from "../kube-object-list-layout"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import moment from "moment"; import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout"; import { KubeObjectAge } from "../kube-object/age"; +import type { CronJobStore } from "./store"; +import type { JobStore } from "../+workloads-jobs/store"; +import type { EventStore } from "../+events/store"; +import { withInjectables } from "@ogre-tools/injectable-react"; +import cronJobStoreInjectable from "./store.injectable"; +import jobStoreInjectable from "../+workloads-jobs/store.injectable"; +import eventStoreInjectable from "../+events/store.injectable"; enum columnId { name = "name", @@ -26,9 +30,21 @@ enum columnId { age = "age", } +interface Dependencies { + cronJobStore: CronJobStore; + jobStore: JobStore; + eventStore: EventStore; +} + @observer -export class CronJobs extends React.Component { +class NonInjectedCronJobs extends React.Component{ render() { + const { + cronJobStore, + eventStore, + jobStore, + } = this.props; + return ( (NonInjectedCronJobs, { + getProps: (di, props) => ({ + cronJobStore: di.inject(cronJobStoreInjectable), + eventStore: di.inject(eventStoreInjectable), + jobStore: di.inject(jobStoreInjectable), + ...props, + }), +}); diff --git a/src/renderer/components/+workloads-cronjobs/legacy-store.ts b/src/renderer/components/+workloads-cronjobs/legacy-store.ts deleted file mode 100644 index 880f8f5b0e..0000000000 --- a/src/renderer/components/+workloads-cronjobs/legacy-store.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ - -import { asLegacyGlobalForExtensionApi } from "../../../extensions/as-legacy-globals-for-extension-api/as-legacy-global-object-for-extension-api"; -import cronJobStoreInjectable from "./store.injectable"; - -/** - * @deprecated use `di.inject(cronJobStoreInjectable)` instead - */ -export const cronJobStore = asLegacyGlobalForExtensionApi(cronJobStoreInjectable); diff --git a/yarn.lock b/yarn.lock index 755ad9479c..74445886cc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5199,10 +5199,10 @@ electron-window-state@^5.0.3: jsonfile "^4.0.0" mkdirp "^0.5.1" -electron@^19.1.4: - version "19.1.4" - resolved "https://registry.yarnpkg.com/electron/-/electron-19.1.4.tgz#545a23061746ea0d031c622d2b11f9f25aaba72e" - integrity sha512-eOjkxgnQr90Ti7a5BWSUorkDkbwuRZZ4QnHg8LvvWapVWKhVhtaTF26mX1HpS+MGMzlRZtUmdW/d495BnYbu1g== +electron@^19.1.5: + version "19.1.5" + resolved "https://registry.yarnpkg.com/electron/-/electron-19.1.5.tgz#c03d5ffd5596870bdd5e95849056738779acd098" + integrity sha512-hOPMeJqNUEcZ/gT+BjaPWJfFIUMeUWrCXn1b4z6Xyk+yQ4NeN3cE4subLJz7SUkeeqmvmlw1HE26M2Oyn3o/YA== dependencies: "@electron/get" "^1.14.1" "@types/node" "^16.11.26"