1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Cleanup getDi and registering injectables

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2023-03-01 09:19:41 -05:00
parent 3433bc6fe0
commit 6d1e43e82c
7 changed files with 33 additions and 48 deletions

View File

@ -4,17 +4,11 @@
*/ */
import type { DiContainer } from "@ogre-tools/injectable"; import type { DiContainer } from "@ogre-tools/injectable";
export type Environments = "main" | "renderer";
const legacyGlobalDis = new Map<Environments, DiContainer>(); const legacyGlobalDis = new Map<Environments, DiContainer>();
export enum Environments { export const setLegacyGlobalDiForExtensionApi = (di: DiContainer, environment: Environments) => {
renderer,
main,
}
export const setLegacyGlobalDiForExtensionApi = (
di: DiContainer,
environment: Environments,
) => {
legacyGlobalDis.set(environment, di); legacyGlobalDis.set(environment, di);
}; };

View File

@ -3,5 +3,15 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { createContainer } from "@ogre-tools/injectable"; import { createContainer } from "@ogre-tools/injectable";
import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx";
import { setLegacyGlobalDiForExtensionApi } from "../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
export const getDi = () => createContainer("main"); export const getDi = () => {
const environment = "main";
const di = createContainer(environment);
registerMobX(di);
setLegacyGlobalDiForExtensionApi(di, environment);
return di;
};

View File

@ -5,8 +5,7 @@
import { chunk } from "lodash/fp"; import { chunk } from "lodash/fp";
import type { DiContainer, Injectable } from "@ogre-tools/injectable"; import type { DiContainer, Injectable } from "@ogre-tools/injectable";
import { createContainer, isInjectable, getInjectable } from "@ogre-tools/injectable"; import { isInjectable, getInjectable } from "@ogre-tools/injectable";
import { Environments, setLegacyGlobalDiForExtensionApi } from "../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
import spawnInjectable from "./child-process/spawn.injectable"; import spawnInjectable from "./child-process/spawn.injectable";
import initializeExtensionsInjectable from "./start-main-application/runnables/initialize-extensions.injectable"; import initializeExtensionsInjectable from "./start-main-application/runnables/initialize-extensions.injectable";
import setupIpcMainHandlersInjectable from "./electron-app/runnables/setup-ipc-main-handlers/setup-ipc-main-handlers.injectable"; import setupIpcMainHandlersInjectable from "./electron-app/runnables/setup-ipc-main-handlers/setup-ipc-main-handlers.injectable";
@ -25,20 +24,20 @@ import electronQuitAndInstallUpdateInjectable from "./electron-app/features/elec
import electronUpdaterIsActiveInjectable from "./electron-app/features/electron-updater-is-active.injectable"; import electronUpdaterIsActiveInjectable from "./electron-app/features/electron-updater-is-active.injectable";
import setUpdateOnQuitInjectable from "./electron-app/features/set-update-on-quit.injectable"; import setUpdateOnQuitInjectable from "./electron-app/features/set-update-on-quit.injectable";
import waitUntilBundledExtensionsAreLoadedInjectable from "./start-main-application/lens-window/application-window/wait-until-bundled-extensions-are-loaded.injectable"; import waitUntilBundledExtensionsAreLoadedInjectable from "./start-main-application/lens-window/application-window/wait-until-bundled-extensions-are-loaded.injectable";
import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx";
import electronInjectable from "./utils/resolve-system-proxy/electron.injectable"; import electronInjectable from "./utils/resolve-system-proxy/electron.injectable";
import initializeClusterManagerInjectable from "./cluster/initialize-manager.injectable"; import initializeClusterManagerInjectable from "./cluster/initialize-manager.injectable";
import type { GlobalOverride } from "../common/test-utils/get-global-override"; import type { GlobalOverride } from "../common/test-utils/get-global-override";
import nodeEnvInjectionToken from "../common/vars/node-env-injection-token"; import nodeEnvInjectionToken from "../common/vars/node-env-injection-token";
import { getOverrideFsWithFakes } from "../test-utils/override-fs-with-fakes"; import { getOverrideFsWithFakes } from "../test-utils/override-fs-with-fakes";
import { applicationInformationFakeInjectable } from "../common/vars/application-information-fake-injectable"; import { applicationInformationFakeInjectable } from "../common/vars/application-information-fake-injectable";
import { getDi } from "./getDi";
export function getDiForUnitTesting(opts: { doGeneralOverrides?: boolean } = {}) { export function getDiForUnitTesting(opts: { doGeneralOverrides?: boolean } = {}) {
const { const {
doGeneralOverrides = false, doGeneralOverrides = false,
} = opts; } = opts;
const di = createContainer("main"); const di = getDi();
di.register(getInjectable({ di.register(getInjectable({
id: "node-env", id: "node-env",
@ -46,8 +45,6 @@ export function getDiForUnitTesting(opts: { doGeneralOverrides?: boolean } = {})
injectionToken: nodeEnvInjectionToken, injectionToken: nodeEnvInjectionToken,
})); }));
setLegacyGlobalDiForExtensionApi(di, Environments.main);
di.preventSideEffects(); di.preventSideEffects();
const injectables = ( const injectables = (
@ -57,8 +54,6 @@ export function getDiForUnitTesting(opts: { doGeneralOverrides?: boolean } = {})
.filter(isInjectable) .filter(isInjectable)
) as Injectable<any, any, any>[]; ) as Injectable<any, any, any>[];
registerMobX(di);
runInAction(() => { runInAction(() => {
di.register(applicationInformationFakeInjectable); di.register(applicationInformationFakeInjectable);

View File

@ -4,16 +4,10 @@
*/ */
import type { DiContainer } from "@ogre-tools/injectable"; import type { DiContainer } from "@ogre-tools/injectable";
import { autoRegister } from "@ogre-tools/injectable-extension-for-auto-registration"; import { autoRegister } from "@ogre-tools/injectable-extension-for-auto-registration";
import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx";
import { runInAction } from "mobx"; import { runInAction } from "mobx";
import { Environments, setLegacyGlobalDiForExtensionApi } from "../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
export function registerInjectables(di: DiContainer) { export function registerInjectables(di: DiContainer) {
setLegacyGlobalDiForExtensionApi(di, Environments.main);
runInAction(() => { runInAction(() => {
registerMobX(di);
autoRegister({ autoRegister({
di, di,
targetModule: module, targetModule: module,
@ -25,6 +19,4 @@ export function registerInjectables(di: DiContainer) {
], ],
}); });
}); });
return di;
} }

View File

@ -4,5 +4,17 @@
*/ */
import { createContainer } from "@ogre-tools/injectable"; import { createContainer } from "@ogre-tools/injectable";
import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx";
import { registerInjectableReact } from "@ogre-tools/injectable-react";
import { setLegacyGlobalDiForExtensionApi } from "../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
export const getDi = () => createContainer("renderer"); export const getDi = () => {
const environment = "renderer";
const di = createContainer(environment);
registerMobX(di);
registerInjectableReact(di);
setLegacyGlobalDiForExtensionApi(di, environment);
return di;
};

View File

@ -5,8 +5,7 @@
import { noop, chunk } from "lodash/fp"; import { noop, chunk } from "lodash/fp";
import type { Injectable } from "@ogre-tools/injectable"; import type { Injectable } from "@ogre-tools/injectable";
import { createContainer, isInjectable, getInjectable } from "@ogre-tools/injectable"; import { isInjectable, getInjectable } from "@ogre-tools/injectable";
import { Environments, setLegacyGlobalDiForExtensionApi } from "../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
import requestFromChannelInjectable from "./utils/channel/request-from-channel.injectable"; import requestFromChannelInjectable from "./utils/channel/request-from-channel.injectable";
import { getOverrideFsWithFakes } from "../test-utils/override-fs-with-fakes"; import { getOverrideFsWithFakes } from "../test-utils/override-fs-with-fakes";
import terminalSpawningPoolInjectable from "./components/dock/terminal/terminal-spawning-pool.injectable"; import terminalSpawningPoolInjectable from "./components/dock/terminal/terminal-spawning-pool.injectable";
@ -14,20 +13,19 @@ import hostedClusterIdInjectable from "./cluster-frame-context/hosted-cluster-id
import { runInAction } from "mobx"; import { runInAction } from "mobx";
import requestAnimationFrameInjectable from "./components/animate/request-animation-frame.injectable"; import requestAnimationFrameInjectable from "./components/animate/request-animation-frame.injectable";
import startTopbarStateSyncInjectable from "./components/layout/top-bar/start-state-sync.injectable"; import startTopbarStateSyncInjectable from "./components/layout/top-bar/start-state-sync.injectable";
import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx";
import watchHistoryStateInjectable from "./remote-helpers/watch-history-state.injectable"; import watchHistoryStateInjectable from "./remote-helpers/watch-history-state.injectable";
import legacyOnChannelListenInjectable from "./ipc/legacy-channel-listen.injectable"; import legacyOnChannelListenInjectable from "./ipc/legacy-channel-listen.injectable";
import type { GlobalOverride } from "../common/test-utils/get-global-override"; import type { GlobalOverride } from "../common/test-utils/get-global-override";
import nodeEnvInjectionToken from "../common/vars/node-env-injection-token"; import nodeEnvInjectionToken from "../common/vars/node-env-injection-token";
import { applicationInformationFakeInjectable } from "../common/vars/application-information-fake-injectable"; import { applicationInformationFakeInjectable } from "../common/vars/application-information-fake-injectable";
import { registerInjectableReact } from "@ogre-tools/injectable-react"; import { getDi } from "./getDi";
export const getDiForUnitTesting = ( export const getDiForUnitTesting = (
opts: { doGeneralOverrides?: boolean } = {}, opts: { doGeneralOverrides?: boolean } = {},
) => { ) => {
const { doGeneralOverrides = false } = opts; const { doGeneralOverrides = false } = opts;
const di = createContainer("renderer"); const di = getDi();
di.register(getInjectable({ di.register(getInjectable({
id: "node-env", id: "node-env",
@ -37,8 +35,6 @@ export const getDiForUnitTesting = (
di.preventSideEffects(); di.preventSideEffects();
setLegacyGlobalDiForExtensionApi(di, Environments.renderer);
const injectables = ( const injectables = (
global.injectablePaths.renderer.paths global.injectablePaths.renderer.paths
.map(path => require(path)) .map(path => require(path))
@ -46,9 +42,6 @@ export const getDiForUnitTesting = (
.filter(isInjectable) .filter(isInjectable)
) as Injectable<any, any, any>[]; ) as Injectable<any, any, any>[];
registerMobX(di);
registerInjectableReact(di);
runInAction(() => { runInAction(() => {
di.register(applicationInformationFakeInjectable); di.register(applicationInformationFakeInjectable);

View File

@ -5,19 +5,10 @@
import type { DiContainer } from "@ogre-tools/injectable"; import type { DiContainer } from "@ogre-tools/injectable";
import { autoRegister } from "@ogre-tools/injectable-extension-for-auto-registration"; import { autoRegister } from "@ogre-tools/injectable-extension-for-auto-registration";
import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx";
import { registerInjectableReact } from "@ogre-tools/injectable-react";
import { runInAction } from "mobx"; import { runInAction } from "mobx";
import { Environments, setLegacyGlobalDiForExtensionApi } from "../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
export function registerInjectables(di: DiContainer) { export function registerInjectables(di: DiContainer) {
setLegacyGlobalDiForExtensionApi(di, Environments.renderer);
registerMobX(di);
registerInjectableReact(di);
runInAction(() => { runInAction(() => {
autoRegister({ autoRegister({
di, di,
targetModule: module, targetModule: module,
@ -29,6 +20,4 @@ export function registerInjectables(di: DiContainer) {
], ],
}); });
}); });
return di;
} }