diff --git a/packages/core/src/common/vars/build-semantic-version.injectable.ts b/packages/core/src/common/vars/build-semantic-version.injectable.ts index 402fb9d442..279740adf5 100644 --- a/packages/core/src/common/vars/build-semantic-version.injectable.ts +++ b/packages/core/src/common/vars/build-semantic-version.injectable.ts @@ -3,27 +3,13 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ -import { getInjectionToken } from "@ogre-tools/injectable"; import { SemVer } from "semver"; -import type { InitializableState } from "../initializable-state/create"; +import { buildVersionInitializable } from "../../features/vars/build-version/common/token"; import { createInitializableState } from "../initializable-state/create"; -import type { RequestChannel } from "@k8slens/messaging"; - -export const buildVersionInjectionToken = getInjectionToken>({ - id: "build-version-token", -}); - -export const buildVersionChannel: RequestChannel = { - id: "build-version", -}; const buildSemanticVersionInjectable = createInitializableState({ id: "build-semantic-version", - init: (di) => { - const buildVersion = di.inject(buildVersionInjectionToken); - - return new SemVer(buildVersion.get()); - }, + init: (di) => new SemVer(di.inject(buildVersionInitializable.stateToken)), }); export default buildSemanticVersionInjectable; diff --git a/packages/core/src/extensions/common-api/app.ts b/packages/core/src/extensions/common-api/app.ts index a7b33c35cc..e5bbc2ed15 100644 --- a/packages/core/src/extensions/common-api/app.ts +++ b/packages/core/src/extensions/common-api/app.ts @@ -10,11 +10,11 @@ import isSnapPackageInjectable from "../../common/vars/is-snap-package.injectabl import isWindowsInjectable from "../../common/vars/is-windows.injectable"; import { getLegacyGlobalDiForExtensionApi } from "../as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api"; import { issuesTrackerUrl } from "../../common/vars"; -import { buildVersionInjectionToken } from "../../common/vars/build-semantic-version.injectable"; import { asLegacyGlobalForExtensionApi } from "../as-legacy-globals-for-extension-api/as-legacy-global-object-for-extension-api"; import enabledExtensionsInjectable from "../../features/extensions/enabled/common/enabled-extensions.injectable"; import userPreferencesStateInjectable from "../../features/user-preferences/common/state.injectable"; import { lensBuildEnvironmentInjectionToken } from "@k8slens/application"; +import { buildVersionInitializable } from "../../features/vars/build-version/common/token"; const userStore = asLegacyGlobalForExtensionApi(userPreferencesStateInjectable); const enabledExtensions = asLegacyGlobalForExtensionApi(enabledExtensionsInjectable); @@ -27,7 +27,7 @@ export const App = { get version() { const di = getLegacyGlobalDiForExtensionApi(); - return di.inject(buildVersionInjectionToken).get(); + return di.inject(buildVersionInitializable.stateToken); }, get appName() { const di = getLegacyGlobalDiForExtensionApi(); diff --git a/packages/core/src/extensions/common-api/utils.ts b/packages/core/src/extensions/common-api/utils.ts index 40f8e00175..f30cf3bd48 100644 --- a/packages/core/src/extensions/common-api/utils.ts +++ b/packages/core/src/extensions/common-api/utils.ts @@ -4,7 +4,7 @@ */ import openLinkInBrowserInjectable from "../../common/utils/open-link-in-browser.injectable"; -import buildVersionInjectable from "../../main/vars/build-version/build-version.injectable"; +import { buildVersionInitializable } from "../../features/vars/build-version/common/token"; import { asLegacyGlobalFunctionForExtensionApi } from "../as-legacy-globals-for-extension-api/as-legacy-global-function-for-extension-api"; import { getLegacyGlobalDiForExtensionApi } from "../as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api"; @@ -60,5 +60,5 @@ export const openBrowser = asLegacyGlobalFunctionForExtensionApi(openLinkInBrows export const getAppVersion = () => { const di = getLegacyGlobalDiForExtensionApi(); - return di.inject(buildVersionInjectable).get(); + return di.inject(buildVersionInitializable.stateToken); }; diff --git a/packages/core/src/features/application-menu/main/menu-items/special-menu-for-mac-application/show-about-application/show-about.injectable.ts b/packages/core/src/features/application-menu/main/menu-items/special-menu-for-mac-application/show-about-application/show-about.injectable.ts index 309b0b2af7..7568482c12 100644 --- a/packages/core/src/features/application-menu/main/menu-items/special-menu-for-mac-application/show-about-application/show-about.injectable.ts +++ b/packages/core/src/features/application-menu/main/menu-items/special-menu-for-mac-application/show-about-application/show-about.injectable.ts @@ -7,16 +7,16 @@ import showMessagePopupInjectable from "../../../../../../main/electron-app/feat import isWindowsInjectable from "../../../../../../common/vars/is-windows.injectable"; import appNameInjectable from "../../../../../../common/vars/app-name.injectable"; import productNameInjectable from "../../../../../../common/vars/product-name.injectable"; -import buildVersionInjectable from "../../../../../../main/vars/build-version/build-version.injectable"; import extensionApiVersionInjectable from "../../../../../../common/vars/extension-api-version.injectable"; import applicationCopyrightInjectable from "../../../../../../common/vars/application-copyright.injectable"; import specificVersionsInjectable from "./about-bundled-extensions.injectable"; +import { buildVersionInitializable } from "../../../../../vars/build-version/common/token"; const showAboutInjectable = getInjectable({ id: "show-about", instantiate: (di) => { - const buildVersion = di.inject(buildVersionInjectable); + const buildVersion = di.inject(buildVersionInitializable.stateToken); const extensionApiVersion = di.inject(extensionApiVersionInjectable); const showMessagePopup = di.inject(showMessagePopupInjectable); const isWindows = di.inject(isWindowsInjectable); @@ -27,7 +27,7 @@ const showAboutInjectable = getInjectable({ return () => { const appInfo = [ - `${appName}: ${buildVersion.get()}`, + `${appName}: ${buildVersion}`, `Extension API: ${extensionApiVersion}`, `Electron: ${process.versions.electron}`, `Chrome: ${process.versions.chrome}`, diff --git a/packages/core/src/features/application-update/analytics-for-installing-update.test.ts b/packages/core/src/features/application-update/analytics-for-installing-update.test.ts index 5a74e1f1d1..780a81a81d 100644 --- a/packages/core/src/features/application-update/analytics-for-installing-update.test.ts +++ b/packages/core/src/features/application-update/analytics-for-installing-update.test.ts @@ -19,7 +19,7 @@ import quitAndInstallUpdateInjectable from "./main/quit-and-install-update.injec import periodicalCheckForUpdatesInjectable from "./child-features/periodical-checking-of-updates/main/periodical-check-for-updates.injectable"; import { advanceFakeTime, testUsingFakeTime } from "../../test-utils/use-fake-time"; import emitEventInjectable from "../../common/app-event-bus/emit-event.injectable"; -import getBuildVersionInjectable from "../../main/vars/build-version/get-build-version.injectable"; +import getBuildVersionInjectable from "../../main/electron-app/features/get-build-version.injectable"; describe("analytics for installing update", () => { let builder: ApplicationBuilder; diff --git a/packages/core/src/features/application-update/child-features/selection-of-update-stability/selection-of-update-stability.test.ts b/packages/core/src/features/application-update/child-features/selection-of-update-stability/selection-of-update-stability.test.ts index 7691ee14aa..00018fdf90 100644 --- a/packages/core/src/features/application-update/child-features/selection-of-update-stability/selection-of-update-stability.test.ts +++ b/packages/core/src/features/application-update/child-features/selection-of-update-stability/selection-of-update-stability.test.ts @@ -23,7 +23,7 @@ import showInfoNotificationInjectable from "../../../../renderer/components/noti import processCheckingForUpdatesInjectable from "../../main/process-checking-for-updates.injectable"; import type { DiContainer } from "@ogre-tools/injectable"; import getBuildVersionInjectable - from "../../../../main/vars/build-version/get-build-version.injectable"; + from "../../../../main/electron-app/features/get-build-version.injectable"; describe("selection of update stability", () => { let builder: ApplicationBuilder; diff --git a/packages/core/src/features/application-update/downgrading-version-update.test.ts b/packages/core/src/features/application-update/downgrading-version-update.test.ts index ce10befdb6..5bbde89527 100644 --- a/packages/core/src/features/application-update/downgrading-version-update.test.ts +++ b/packages/core/src/features/application-update/downgrading-version-update.test.ts @@ -14,7 +14,7 @@ import processCheckingForUpdatesInjectable from "./main/process-checking-for-upd import selectedUpdateChannelInjectable from "./common/selected-update-channel/selected-update-channel.injectable"; import type { DiContainer } from "@ogre-tools/injectable"; import { updateChannels } from "./common/update-channels"; -import getBuildVersionInjectable from "../../main/vars/build-version/get-build-version.injectable"; +import getBuildVersionInjectable from "../../main/electron-app/features/get-build-version.injectable"; describe("downgrading version update", () => { let applicationBuilder: ApplicationBuilder; diff --git a/packages/core/src/features/application-update/main/emit-current-version-to-analytics.injectable.ts b/packages/core/src/features/application-update/main/emit-current-version-to-analytics.injectable.ts index cef23c9860..0e23452ed0 100644 --- a/packages/core/src/features/application-update/main/emit-current-version-to-analytics.injectable.ts +++ b/packages/core/src/features/application-update/main/emit-current-version-to-analytics.injectable.ts @@ -6,7 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable"; import { afterApplicationIsLoadedInjectionToken } from "@k8slens/application"; import emitAppEventInjectable from "../../../common/app-event-bus/emit-event.injectable"; import { getCurrentDateTime } from "../../../common/utils/date/get-current-date-time"; -import buildVersionInjectable from "../../../main/vars/build-version/build-version.injectable"; +import { buildVersionInitializable } from "../../vars/build-version/common/token"; const emitCurrentVersionToAnalyticsInjectable = getInjectable({ id: "emit-current-version-to-analytics", @@ -14,14 +14,14 @@ const emitCurrentVersionToAnalyticsInjectable = getInjectable({ instantiate: (di) => ({ run: () => { const emitAppEvent = di.inject(emitAppEventInjectable); - const buildVersion = di.inject(buildVersionInjectable); + const buildVersion = di.inject(buildVersionInitializable.stateToken); emitAppEvent({ name: "app", action: "current-version", params: { - version: buildVersion.get(), + version: buildVersion, currentDateTime: getCurrentDateTime(), }, }); diff --git a/packages/core/src/features/vars/build-version/common/token.ts b/packages/core/src/features/vars/build-version/common/token.ts new file mode 100644 index 0000000000..710662652b --- /dev/null +++ b/packages/core/src/features/vars/build-version/common/token.ts @@ -0,0 +1,13 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import type { RequestChannel } from "@k8slens/messaging"; +import { getInitializable } from "../../../../common/initializable-state/create"; + +export const buildVersionInitializable = getInitializable("build-version"); + +export const buildVersionChannel: RequestChannel = { + id: "build-version", +}; diff --git a/packages/core/src/features/vars/build-version/main/init.injectable.ts b/packages/core/src/features/vars/build-version/main/init.injectable.ts new file mode 100644 index 0000000000..e56525a033 --- /dev/null +++ b/packages/core/src/features/vars/build-version/main/init.injectable.ts @@ -0,0 +1,22 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import { beforeApplicationIsLoadingInjectionToken } from "@k8slens/application"; +import { getInjectablesForInitializable } from "../../../../common/initializable-state/create"; +import getBuildVersionInjectable from "../../../../main/electron-app/features/get-build-version.injectable"; +import { buildVersionInitializable } from "../common/token"; + +export const { + stateInjectable: buildVersionStateInjectable, + initializationInjectable: buildVersionInitializationInjectable, +} = getInjectablesForInitializable({ + token: buildVersionInitializable, + phase: beforeApplicationIsLoadingInjectionToken, + init: (di) => { + const getBuildVersion = di.inject(getBuildVersionInjectable); + + return getBuildVersion(); + }, +}); diff --git a/packages/core/src/main/build-version/setup-channel.injectable.ts b/packages/core/src/features/vars/build-version/main/request-channel.injectable.ts similarity index 59% rename from packages/core/src/main/build-version/setup-channel.injectable.ts rename to packages/core/src/features/vars/build-version/main/request-channel.injectable.ts index 88661c899f..0b3a86d675 100644 --- a/packages/core/src/main/build-version/setup-channel.injectable.ts +++ b/packages/core/src/features/vars/build-version/main/request-channel.injectable.ts @@ -2,18 +2,13 @@ * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ -import { buildVersionChannel } from "../../common/vars/build-semantic-version.injectable"; import { getRequestChannelListenerInjectable } from "@k8slens/messaging"; -import buildVersionInjectable from "../vars/build-version/build-version.injectable"; +import { buildVersionChannel, buildVersionInitializable } from "../common/token"; const buildVersionChannelListenerInjectable = getRequestChannelListenerInjectable({ id: "build-version-channel-listener", channel: buildVersionChannel, - getHandler: (di) => { - const buildVersion = di.inject(buildVersionInjectable); - - return () => buildVersion.get(); - }, + getHandler: (di) => () => di.inject(buildVersionInitializable.stateToken), }); export default buildVersionChannelListenerInjectable; diff --git a/packages/core/src/features/vars/build-version/renderer/init.injectable.ts b/packages/core/src/features/vars/build-version/renderer/init.injectable.ts new file mode 100644 index 0000000000..16b81b5964 --- /dev/null +++ b/packages/core/src/features/vars/build-version/renderer/init.injectable.ts @@ -0,0 +1,22 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import { requestFromChannelInjectionToken } from "@k8slens/messaging"; +import { getInjectablesForInitializable } from "../../../../common/initializable-state/create"; +import { beforeFrameStartsSecondInjectionToken } from "../../../../renderer/before-frame-starts/tokens"; +import { buildVersionChannel, buildVersionInitializable } from "../common/token"; + +export const { + stateInjectable: buildVersionStateInjectable, + initializationInjectable: buildVersionInitializationInjectable, +} = getInjectablesForInitializable({ + token: buildVersionInitializable, + phase: beforeFrameStartsSecondInjectionToken, + init: async (di) => { + const requestFromChannel = di.inject(requestFromChannelInjectionToken); + + return requestFromChannel(buildVersionChannel); + }, +}); diff --git a/packages/core/src/main/vars/build-version/get-build-version.injectable.ts b/packages/core/src/main/electron-app/features/get-build-version.injectable.ts similarity index 85% rename from packages/core/src/main/vars/build-version/get-build-version.injectable.ts rename to packages/core/src/main/electron-app/features/get-build-version.injectable.ts index ddbef55262..70d25e7e98 100644 --- a/packages/core/src/main/vars/build-version/get-build-version.injectable.ts +++ b/packages/core/src/main/electron-app/features/get-build-version.injectable.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import electronAppInjectable from "../../electron-app/electron-app.injectable"; +import electronAppInjectable from "../electron-app.injectable"; const getBuildVersionInjectable = getInjectable({ id: "get-build-version", diff --git a/packages/core/src/main/logger/log-on-start.injectable.ts b/packages/core/src/main/logger/log-on-start.injectable.ts index 8354f81b58..53057f2e23 100644 --- a/packages/core/src/main/logger/log-on-start.injectable.ts +++ b/packages/core/src/main/logger/log-on-start.injectable.ts @@ -6,18 +6,20 @@ import { beforeApplicationIsLoadingInjectionToken } from "@k8slens/application"; import { getInjectable } from "@ogre-tools/injectable"; import loggerInjectable from "../../common/logger.injectable"; import appNameInjectable from "../../common/vars/app-name.injectable"; -import buildVersionInjectable from "../vars/build-version/build-version.injectable"; +import { buildVersionInitializable } from "../../features/vars/build-version/common/token"; +import { buildVersionInitializationInjectable } from "../../features/vars/build-version/main/init.injectable"; const logVersionOnStartInjectable = getInjectable({ id: "log-version-on-start", instantiate: (di) => ({ run: () => { const logger = di.inject(loggerInjectable); - const buildVersion = di.inject(buildVersionInjectable).get(); + const buildVersion = di.inject(buildVersionInitializable.stateToken); const appName = di.inject(appNameInjectable); logger.info(`Starting v${buildVersion} of ${appName}...`); }, + runAfter: buildVersionInitializationInjectable, }), injectionToken: beforeApplicationIsLoadingInjectionToken, }); diff --git a/packages/core/src/main/routes/versions/get-version-route.injectable.ts b/packages/core/src/main/routes/versions/get-version-route.injectable.ts index d132e242d6..54f5c4df2a 100644 --- a/packages/core/src/main/routes/versions/get-version-route.injectable.ts +++ b/packages/core/src/main/routes/versions/get-version-route.injectable.ts @@ -4,23 +4,19 @@ */ import { getRouteInjectable } from "../../router/router.injectable"; import { route } from "../../router/route"; -import buildVersionInjectable from "../../vars/build-version/build-version.injectable"; +import { buildVersionInitializable } from "../../../features/vars/build-version/common/token"; const getVersionRouteInjectable = getRouteInjectable({ id: "get-version-route", - instantiate: (di) => { - const buildVersion = di.inject(buildVersionInjectable); - - return route({ - method: "get", - path: `/version`, - })(() => ({ - response: { - version: buildVersion.get(), - }, - })); - }, + instantiate: (di) => route({ + method: "get", + path: `/version`, + })(() => ({ + response: { + version: di.inject(buildVersionInitializable.stateToken), + }, + })), }); export default getVersionRouteInjectable; diff --git a/packages/core/src/main/shell-session/local-shell-session/open.injectable.ts b/packages/core/src/main/shell-session/local-shell-session/open.injectable.ts index 29cf79e63a..63509cbfe2 100644 --- a/packages/core/src/main/shell-session/local-shell-session/open.injectable.ts +++ b/packages/core/src/main/shell-session/local-shell-session/open.injectable.ts @@ -19,7 +19,6 @@ import getBasenameOfPathInjectable from "../../../common/path/get-basename.injec import computeShellEnvironmentInjectable from "../../../features/shell-sync/main/compute-shell-environment.injectable"; import spawnPtyInjectable from "../spawn-pty.injectable"; import appNameInjectable from "../../../common/vars/app-name.injectable"; -import buildVersionInjectable from "../../vars/build-version/build-version.injectable"; import emitAppEventInjectable from "../../../common/app-event-bus/emit-event.injectable"; import statInjectable from "../../../common/fs/stat.injectable"; import kubeconfigManagerInjectable from "../../kubeconfig-manager/kubeconfig-manager.injectable"; @@ -27,6 +26,7 @@ import userPreferencesStateInjectable from "../../../features/user-preferences/c import userShellSettingInjectable from "../../../features/user-preferences/common/shell-setting.injectable"; import shellSessionEnvsInjectable from "../shell-envs.injectable"; import shellSessionProcessesInjectable from "../processes.injectable"; +import { buildVersionInitializable } from "../../../features/vars/build-version/common/token"; export interface OpenLocalShellSessionArgs { websocket: WebSocket; @@ -49,7 +49,7 @@ const openLocalShellSessionInjectable = getInjectable({ state: di.inject(userPreferencesStateInjectable), userShellSetting: di.inject(userShellSettingInjectable), appName: di.inject(appNameInjectable), - buildVersion: di.inject(buildVersionInjectable), + buildVersion: di.inject(buildVersionInitializable.stateToken), shellSessionEnvs: di.inject(shellSessionEnvsInjectable), shellSessionProcesses: di.inject(shellSessionProcessesInjectable), modifyTerminalShellEnv: di.inject(modifyTerminalShellEnvInjectable), diff --git a/packages/core/src/main/shell-session/local-shell-session/techincal.test.ts b/packages/core/src/main/shell-session/local-shell-session/techincal.test.ts index 6d921ee5fe..f38870df51 100644 --- a/packages/core/src/main/shell-session/local-shell-session/techincal.test.ts +++ b/packages/core/src/main/shell-session/local-shell-session/techincal.test.ts @@ -14,13 +14,13 @@ import readJsonSyncInjectable from "../../../common/fs/read-json-sync.injectable import statInjectable from "../../../common/fs/stat.injectable"; import writeJsonSyncInjectable from "../../../common/fs/write-json-sync.injectable"; import platformInjectable from "../../../common/vars/platform.injectable"; +import { buildVersionStateInjectable } from "../../../features/vars/build-version/main/init.injectable"; import { getDiForUnitTesting } from "../../getDiForUnitTesting"; import type { KubeconfigManager } from "../../kubeconfig-manager/kubeconfig-manager"; import kubeconfigManagerInjectable from "../../kubeconfig-manager/kubeconfig-manager.injectable"; import createKubectlInjectable from "../../kubectl/create-kubectl.injectable"; import type { Kubectl } from "../../kubectl/kubectl"; import lensProxyPortInjectable from "../../lens-proxy/lens-proxy-port.injectable"; -import buildVersionInjectable from "../../vars/build-version/build-version.injectable"; import type { OpenShellSession } from "../create-shell-session.injectable"; import type { SpawnPty } from "../spawn-pty.injectable"; import spawnPtyInjectable from "../spawn-pty.injectable"; @@ -34,9 +34,7 @@ describe("technical unit tests for local shell sessions", () => { di.override(directoryForUserDataInjectable, () => "/some-directory-for-user-data"); di.override(directoryForTempInjectable, () => "/some-directory-for-tmp"); - di.override(buildVersionInjectable, () => ({ - get: () => "1.1.1", - })); + di.override(buildVersionStateInjectable, () => "1.1.1"); di.override(pathExistsInjectable, () => () => { throw new Error("tried call pathExists without override"); }); di.override(pathExistsSyncInjectable, () => () => { throw new Error("tried call pathExistsSync without override"); }); di.override(readJsonSyncInjectable, () => () => { throw new Error("tried call readJsonSync without override"); }); diff --git a/packages/core/src/main/shell-session/node-shell-session/open.injectable.ts b/packages/core/src/main/shell-session/node-shell-session/open.injectable.ts index bdff572b12..d8d50a8b6a 100644 --- a/packages/core/src/main/shell-session/node-shell-session/open.injectable.ts +++ b/packages/core/src/main/shell-session/node-shell-session/open.injectable.ts @@ -15,7 +15,6 @@ import createKubeJsonApiForClusterInjectable from "../../../common/k8s-api/creat import computeShellEnvironmentInjectable from "../../../features/shell-sync/main/compute-shell-environment.injectable"; import spawnPtyInjectable from "../spawn-pty.injectable"; import appNameInjectable from "../../../common/vars/app-name.injectable"; -import buildVersionInjectable from "../../vars/build-version/build-version.injectable"; import emitAppEventInjectable from "../../../common/app-event-bus/emit-event.injectable"; import statInjectable from "../../../common/fs/stat.injectable"; import createKubeApiInjectable from "../../../common/k8s-api/create-kube-api.injectable"; @@ -24,6 +23,7 @@ import kubeconfigManagerInjectable from "../../kubeconfig-manager/kubeconfig-man import userShellSettingInjectable from "../../../features/user-preferences/common/shell-setting.injectable"; import shellSessionEnvsInjectable from "../shell-envs.injectable"; import shellSessionProcessesInjectable from "../processes.injectable"; +import { buildVersionInitializable } from "../../../features/vars/build-version/common/token"; export interface NodeShellSessionArgs { websocket: WebSocket; @@ -44,7 +44,7 @@ const openNodeShellSessionInjectable = getInjectable({ logger: di.inject(loggerInjectable), userShellSetting: di.inject(userShellSettingInjectable), appName: di.inject(appNameInjectable), - buildVersion: di.inject(buildVersionInjectable), + buildVersion: di.inject(buildVersionInitializable.stateToken), shellSessionEnvs: di.inject(shellSessionEnvsInjectable), shellSessionProcesses: di.inject(shellSessionProcessesInjectable), createKubeJsonApiForCluster: di.inject(createKubeJsonApiForClusterInjectable), diff --git a/packages/core/src/main/shell-session/shell-session.ts b/packages/core/src/main/shell-session/shell-session.ts index 90c8e80297..9ce5e0cb0f 100644 --- a/packages/core/src/main/shell-session/shell-session.ts +++ b/packages/core/src/main/shell-session/shell-session.ts @@ -15,7 +15,6 @@ import { type TerminalMessage, TerminalChannels } from "../../common/terminal/ch import type { Logger } from "../../common/logger"; import type { ComputeShellEnvironment } from "../../features/shell-sync/main/compute-shell-environment.injectable"; import type { SpawnPty } from "./spawn-pty.injectable"; -import type { InitializableState } from "../../common/initializable-state/create"; import type { EmitAppEvent } from "../../common/app-event-bus/emit-event.injectable"; import type { Stat } from "../../common/fs/stat.injectable"; import type { IComputedValue } from "mobx"; @@ -112,7 +111,7 @@ export interface ShellSessionDependencies { readonly logger: Logger; readonly userShellSetting: IComputedValue; readonly appName: string; - readonly buildVersion: InitializableState; + readonly buildVersion: string; readonly proxyKubeconfigPath: string; readonly directoryContainingKubectl: string; readonly shellSessionEnvs: ShellSessionEnvs; @@ -363,7 +362,7 @@ export abstract class ShellSession { env.PTYPID = process.pid.toString(); env.KUBECONFIG = this.dependencies.proxyKubeconfigPath; env.TERM_PROGRAM = this.dependencies.appName; - env.TERM_PROGRAM_VERSION = this.dependencies.buildVersion.get(); + env.TERM_PROGRAM_VERSION = this.dependencies.buildVersion; if (this.cluster.preferences.httpsProxy) { env.HTTPS_PROXY = this.cluster.preferences.httpsProxy; diff --git a/packages/core/src/main/start-main-application/runnables/setup-lens-proxy.injectable.ts b/packages/core/src/main/start-main-application/runnables/setup-lens-proxy.injectable.ts index f8f7f801e7..96ec45884c 100644 --- a/packages/core/src/main/start-main-application/runnables/setup-lens-proxy.injectable.ts +++ b/packages/core/src/main/start-main-application/runnables/setup-lens-proxy.injectable.ts @@ -10,11 +10,11 @@ import lensProxyPortInjectable from "../../lens-proxy/lens-proxy-port.injectable import isWindowsInjectable from "../../../common/vars/is-windows.injectable"; import showErrorPopupInjectable from "../../electron-app/features/show-error-popup.injectable"; import { beforeApplicationIsLoadingInjectionToken } from "@k8slens/application"; -import buildVersionInjectable from "../../vars/build-version/build-version.injectable"; -import initializeBuildVersionInjectable from "../../vars/build-version/init.injectable"; import lensProxyCertificateInjectable from "../../../common/certificate/lens-proxy-certificate.injectable"; import fetchInjectable from "../../../common/fetch/fetch.injectable"; import { Agent } from "https"; +import { buildVersionInitializable } from "../../../features/vars/build-version/common/token"; +import { buildVersionInitializationInjectable } from "../../../features/vars/build-version/main/init.injectable"; const setupLensProxyInjectable = getInjectable({ id: "setup-lens-proxy", @@ -27,7 +27,7 @@ const setupLensProxyInjectable = getInjectable({ const lensProxyPort = di.inject(lensProxyPortInjectable); const isWindows = di.inject(isWindowsInjectable); const showErrorPopup = di.inject(showErrorPopupInjectable); - const buildVersion = di.inject(buildVersionInjectable); + const buildVersion = di.inject(buildVersionInitializable.stateToken); const lensProxyCertificate = di.inject(lensProxyCertificateInjectable); const fetch = di.inject(fetchInjectable); @@ -51,7 +51,7 @@ const setupLensProxyInjectable = getInjectable({ const { version: versionFromProxy } = await versionResponse.json() as { version: string }; - if (buildVersion.get() !== versionFromProxy) { + if (buildVersion !== versionFromProxy) { logger.error("Proxy server responded with invalid response"); return forceAppExit(); @@ -76,7 +76,7 @@ const setupLensProxyInjectable = getInjectable({ return forceAppExit(); } }, - runAfter: initializeBuildVersionInjectable, + runAfter: buildVersionInitializationInjectable, }), causesSideEffects: true, diff --git a/packages/core/src/main/vars/build-version/build-version.injectable.ts b/packages/core/src/main/vars/build-version/build-version.injectable.ts deleted file mode 100644 index 5e560282b9..0000000000 --- a/packages/core/src/main/vars/build-version/build-version.injectable.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ -import { createInitializableState } from "../../../common/initializable-state/create"; -import { buildVersionInjectionToken } from "../../../common/vars/build-semantic-version.injectable"; -import getBuildVersionInjectable from "./get-build-version.injectable"; - -const buildVersionInjectable = createInitializableState({ - id: "build-version", - init: (di) => { - const getBuildVersion = di.inject(getBuildVersionInjectable); - - return getBuildVersion(); - }, - injectionToken: buildVersionInjectionToken, -}); - -export default buildVersionInjectable; diff --git a/packages/core/src/main/vars/build-version/init.injectable.ts b/packages/core/src/main/vars/build-version/init.injectable.ts deleted file mode 100644 index 509c0262d1..0000000000 --- a/packages/core/src/main/vars/build-version/init.injectable.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ -import { getInjectable } from "@ogre-tools/injectable"; -import { beforeApplicationIsLoadingInjectionToken } from "@k8slens/application"; -import buildVersionInjectable from "./build-version.injectable"; - -const initializeBuildVersionInjectable = getInjectable({ - id: "initialize-build-version", - instantiate: (di) => ({ - run: async () => { - const buildVersion = di.inject(buildVersionInjectable); - - await buildVersion.init(); - }, - }), - injectionToken: beforeApplicationIsLoadingInjectionToken, -}); - -export default initializeBuildVersionInjectable; diff --git a/packages/core/src/main/vars/semantic-build-version/init.injectable.ts b/packages/core/src/main/vars/semantic-build-version/init.injectable.ts index 8f0dcb7387..acf2ba8861 100644 --- a/packages/core/src/main/vars/semantic-build-version/init.injectable.ts +++ b/packages/core/src/main/vars/semantic-build-version/init.injectable.ts @@ -5,7 +5,7 @@ import { getInjectable } from "@ogre-tools/injectable"; import buildSemanticVersionInjectable from "../../../common/vars/build-semantic-version.injectable"; import { beforeApplicationIsLoadingInjectionToken } from "@k8slens/application"; -import initializeBuildVersionInjectable from "../build-version/init.injectable"; +import { buildVersionInitializationInjectable } from "../../../features/vars/build-version/main/init.injectable"; const initSemanticBuildVersionInjectable = getInjectable({ id: "init-semantic-build-version", @@ -16,7 +16,7 @@ const initSemanticBuildVersionInjectable = getInjectable({ await buildSemanticVersion.init(); }, - runAfter: initializeBuildVersionInjectable, + runAfter: buildVersionInitializationInjectable, }; }, injectionToken: beforeApplicationIsLoadingInjectionToken, diff --git a/packages/core/src/renderer/vars/build-version/build-version.injectable.ts b/packages/core/src/renderer/vars/build-version/build-version.injectable.ts deleted file mode 100644 index f9ba5e34b0..0000000000 --- a/packages/core/src/renderer/vars/build-version/build-version.injectable.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ -import { createInitializableState } from "../../../common/initializable-state/create"; -import { requestFromChannelInjectionToken } from "@k8slens/messaging"; -import { buildVersionChannel, buildVersionInjectionToken } from "../../../common/vars/build-semantic-version.injectable"; - -const buildVersionInjectable = createInitializableState({ - id: "build-version", - init: (di) => { - const requestFromChannel = di.inject(requestFromChannelInjectionToken); - - return requestFromChannel(buildVersionChannel); - }, - injectionToken: buildVersionInjectionToken, -}); - -export default buildVersionInjectable; diff --git a/packages/core/src/renderer/vars/build-version/init.injectable.ts b/packages/core/src/renderer/vars/build-version/init.injectable.ts deleted file mode 100644 index 0eeecaa838..0000000000 --- a/packages/core/src/renderer/vars/build-version/init.injectable.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ -import { getInjectable } from "@ogre-tools/injectable"; -import { beforeFrameStartsSecondInjectionToken } from "../../before-frame-starts/tokens"; -import buildVersionInjectable from "./build-version.injectable"; - -const initializeBuildVersionInjectable = getInjectable({ - id: "initialize-build-version", - instantiate: (di) => ({ - run: async () => { - const buildVersion = di.inject(buildVersionInjectable); - - await buildVersion.init(); - }, - }), - injectionToken: beforeFrameStartsSecondInjectionToken, -}); - -export default initializeBuildVersionInjectable; diff --git a/packages/core/src/renderer/vars/semantic-build-version/init.injectable.ts b/packages/core/src/renderer/vars/semantic-build-version/init.injectable.ts index 3ef0a6a496..7c11a19c31 100644 --- a/packages/core/src/renderer/vars/semantic-build-version/init.injectable.ts +++ b/packages/core/src/renderer/vars/semantic-build-version/init.injectable.ts @@ -4,8 +4,8 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import buildSemanticVersionInjectable from "../../../common/vars/build-semantic-version.injectable"; +import { buildVersionInitializationInjectable } from "../../../features/vars/build-version/renderer/init.injectable"; import { beforeFrameStartsSecondInjectionToken } from "../../before-frame-starts/tokens"; -import initializeBuildVersionInjectable from "../build-version/init.injectable"; const initSemanticBuildVersionInjectable = getInjectable({ id: "init-semantic-build-version", @@ -15,7 +15,7 @@ const initSemanticBuildVersionInjectable = getInjectable({ await buildSemanticVersion.init(); }, - runAfter: initializeBuildVersionInjectable, + runAfter: buildVersionInitializationInjectable, }), injectionToken: beforeFrameStartsSecondInjectionToken, });