diff --git a/packages/core/src/extensions/lens-renderer-extension.ts b/packages/core/src/extensions/lens-renderer-extension.ts index 0b56c12e41..3429a94a6d 100644 --- a/packages/core/src/extensions/lens-renderer-extension.ts +++ b/packages/core/src/extensions/lens-renderer-extension.ts @@ -35,6 +35,15 @@ import type { IComputedValue } from "mobx"; import type { NavigateToRoute } from "../common/front-end-routing/navigate-to-route-injection-token"; import type { Route } from "../common/front-end-routing/front-end-route-injection-token"; import type { GetExtensionPageParameters } from "../renderer/routes/get-extension-page-parameters.injectable"; +import type { InstalledExtension } from "./common-api"; +import { Environments, getEnvironmentSpecificLegacyGlobalDiForExtensionApi } from "./as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api"; +import catalogCategoryRegistryInjectable from "../common/catalog/category-registry.injectable"; +import catalogEntityRegistryInjectable from "../renderer/api/catalog/entity/registry.injectable"; +import loggerInjectable from "../common/logger.injectable"; +import getExtensionPageParametersInjectable from "../renderer/routes/get-extension-page-parameters.injectable"; +import navigateToRouteInjectable from "../renderer/routes/navigate-to-route.injectable"; +import routesInjectable from "../renderer/routes/routes.injectable"; +import fileSystemProvisionerStoreInjectable from "./extension-loader/file-system-provisioner-store/file-system-provisioner-store.injectable"; interface LensRendererExtensionDependencies extends LensExtensionDependencies { navigateToRoute: NavigateToRoute; @@ -71,6 +80,21 @@ export class LensRendererExtension extends LensExtension { */ declare protected readonly dependencies: LensRendererExtensionDependencies; + constructor(extension: InstalledExtension) { + const di = getEnvironmentSpecificLegacyGlobalDiForExtensionApi(Environments.renderer); + const deps: LensRendererExtensionDependencies = { + categoryRegistry: di.inject(catalogCategoryRegistryInjectable), + entityRegistry: di.inject(catalogEntityRegistryInjectable), + fileSystemProvisionerStore: di.inject(fileSystemProvisionerStoreInjectable), + getExtensionPageParameters: di.inject(getExtensionPageParametersInjectable), + navigateToRoute: di.inject(navigateToRouteInjectable), + routes: di.inject(routesInjectable), + logger: di.inject(loggerInjectable), + }; + + super(deps, extension); + } + async navigate(pageId?: string, params: object = {}) { const routes = this.dependencies.routes.get(); const targetRegistration = [...this.globalPages, ...this.clusterPages] diff --git a/packages/core/src/renderer/components/test-utils/get-extension-fake.ts b/packages/core/src/renderer/components/test-utils/get-extension-fake.ts index 8079207daa..41ac5ad869 100644 --- a/packages/core/src/renderer/components/test-utils/get-extension-fake.ts +++ b/packages/core/src/renderer/components/test-utils/get-extension-fake.ts @@ -2,20 +2,9 @@ * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ -import type { Writable } from "type-fest"; -import fileSystemProvisionerStoreInjectable from "../../../extensions/extension-loader/file-system-provisioner-store/file-system-provisioner-store.injectable"; -import { lensExtensionDependencies } from "../../../extensions/lens-extension"; import { LensMainExtension } from "../../../extensions/lens-main-extension"; -import navigateForExtensionInjectable from "../../../main/start-main-application/lens-window/navigate-for-extension.injectable"; import { LensRendererExtension } from "../../../extensions/lens-renderer-extension"; -import catalogCategoryRegistryInjectable from "../../../common/catalog/category-registry.injectable"; -import getExtensionPageParametersInjectable from "../../routes/get-extension-page-parameters.injectable"; -import navigateToRouteInjectable from "../../routes/navigate-to-route.injectable"; -import routesInjectable from "../../routes/routes.injectable"; -import catalogEntityRegistryForMainInjectable from "../../../main/catalog/entity-registry.injectable"; -import catalogEntityRegistryForRendererInjectable from "../../api/catalog/entity/registry.injectable"; import type { DiContainer } from "@ogre-tools/injectable"; -import loggerInjectable from "../../../common/logger.injectable"; export class TestExtensionMain extends LensMainExtension {} export class TestExtensionRenderer extends LensRendererExtension {} @@ -27,63 +16,44 @@ export interface FakeExtensionOptions { mainOptions?: Partial; } -export const getExtensionFakeForMain = (di: DiContainer, id: string, name: string, options: Partial) => { - const instance = new TestExtensionMain({ - id, - absolutePath: "irrelevant", - isBundled: false, - isCompatible: false, - isEnabled: false, - manifest: { - name, - version: "1.0.0", - engines: { - lens: "^5.5.0", +export const getExtensionFakeForMain = (di: DiContainer, id: string, name: string, options: Partial) => ( + Object.assign( + new TestExtensionMain({ + id, + absolutePath: "irrelevant", + isBundled: false, + isCompatible: false, + isEnabled: false, + manifest: { + name, + version: "1.0.0", + engines: { + lens: "^5.5.0", + }, }, - }, - manifestPath: "irrelevant", - }); + manifestPath: "irrelevant", + }), + options, + ) +); - Object.assign(instance, options); - - (instance as Writable)[lensExtensionDependencies] = { - fileSystemProvisionerStore: di.inject(fileSystemProvisionerStoreInjectable), - entityRegistry: di.inject(catalogEntityRegistryForMainInjectable), - navigate: di.inject(navigateForExtensionInjectable), - logger: di.inject(loggerInjectable), - }; - - return instance; -}; - -export const getExtensionFakeForRenderer = (di: DiContainer, id: string, name: string, options: Partial) => { - const instance = new TestExtensionRenderer({ - id, - absolutePath: "irrelevant", - isBundled: false, - isCompatible: false, - isEnabled: false, - manifest: { - name, - version: "1.0.0", - engines: { - lens: "^5.5.0", +export const getExtensionFakeForRenderer = (di: DiContainer, id: string, name: string, options: Partial) => ( + Object.assign( + new TestExtensionRenderer({ + id, + absolutePath: "irrelevant", + isBundled: false, + isCompatible: false, + isEnabled: false, + manifest: { + name, + version: "1.0.0", + engines: { + lens: "^5.5.0", + }, }, - }, - manifestPath: "irrelevant", - }); - - Object.assign(instance, options); - - (instance as Writable)[lensExtensionDependencies] = { - categoryRegistry: di.inject(catalogCategoryRegistryInjectable), - entityRegistry: di.inject(catalogEntityRegistryForRendererInjectable), - fileSystemProvisionerStore: di.inject(fileSystemProvisionerStoreInjectable), - getExtensionPageParameters: di.inject(getExtensionPageParametersInjectable), - navigateToRoute: di.inject(navigateToRouteInjectable), - routes: di.inject(routesInjectable), - logger: di.inject(loggerInjectable), - }; - - return instance; -}; + manifestPath: "irrelevant", + }), + options, + ) +);