mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Group overrides by category
Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com> Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
This commit is contained in:
parent
f18926ab66
commit
5a501c4ad0
@ -5,11 +5,8 @@
|
|||||||
|
|
||||||
import glob from "glob";
|
import glob from "glob";
|
||||||
import { kebabCase, memoize, noop } from "lodash/fp";
|
import { kebabCase, memoize, noop } from "lodash/fp";
|
||||||
import { createContainer } from "@ogre-tools/injectable";
|
import { createContainer, DiContainer } from "@ogre-tools/injectable";
|
||||||
|
|
||||||
import { Environments, setLegacyGlobalDiForExtensionApi } from "../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
|
import { Environments, setLegacyGlobalDiForExtensionApi } from "../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
|
||||||
import getElectronAppPathInjectable from "./app-paths/get-electron-app-path/get-electron-app-path.injectable";
|
|
||||||
import setElectronAppPathInjectable from "./app-paths/set-electron-app-path/set-electron-app-path.injectable";
|
|
||||||
import appNameInjectable from "./app-paths/app-name/app-name.injectable";
|
import appNameInjectable from "./app-paths/app-name/app-name.injectable";
|
||||||
import registerChannelInjectable from "./app-paths/register-channel/register-channel.injectable";
|
import registerChannelInjectable from "./app-paths/register-channel/register-channel.injectable";
|
||||||
import writeJsonFileInjectable from "../common/fs/write-json-file.injectable";
|
import writeJsonFileInjectable from "../common/fs/write-json-file.injectable";
|
||||||
@ -35,25 +32,15 @@ import { getAbsolutePathFake } from "../common/test-utils/get-absolute-path-fake
|
|||||||
import joinPathsInjectable from "../common/path/join-paths.injectable";
|
import joinPathsInjectable from "../common/path/join-paths.injectable";
|
||||||
import { joinPathsFake } from "../common/test-utils/join-paths-fake";
|
import { joinPathsFake } from "../common/test-utils/join-paths-fake";
|
||||||
import hotbarStoreInjectable from "../common/hotbar-store.injectable";
|
import hotbarStoreInjectable from "../common/hotbar-store.injectable";
|
||||||
import whenApplicationIsActivatedInjectable from "./electron-app/when-application-is-activated.injectable";
|
|
||||||
import whenApplicationWillQuitInjectable from "./electron-app/when-application-will-quit.injectable";
|
|
||||||
import whenOpeningUrlInjectable from "./electron-app/when-opening-url.injectable";
|
|
||||||
import whenSecondInstanceInjectable from "./electron-app/when-second-instance.injectable";
|
|
||||||
import whenSystemShutdownInjectable from "./electron-app/when-system-shutdown.injectable";
|
|
||||||
import exitAppInjectable from "./electron-app/exit-app.injectable";
|
|
||||||
import setApplicationNameInjectable from "./electron-app/set-application-name.injectable";
|
|
||||||
import getCommandLineSwitchInjectable from "./electron-app/get-command-line-switch.injectable";
|
|
||||||
import isAutoUpdateEnabledInjectable from "./is-auto-update-enabled.injectable";
|
import isAutoUpdateEnabledInjectable from "./is-auto-update-enabled.injectable";
|
||||||
import appEventBusInjectable from "../common/app-event-bus/app-event-bus.injectable";
|
import appEventBusInjectable from "../common/app-event-bus/app-event-bus.injectable";
|
||||||
import { EventEmitter } from "../common/event-emitter";
|
import { EventEmitter } from "../common/event-emitter";
|
||||||
import type { AppEvent } from "../common/app-event-bus/event-bus";
|
import type { AppEvent } from "../common/app-event-bus/event-bus";
|
||||||
import registerProtocolClientInjectable from "./electron-app/register-protocol-client.injectable";
|
|
||||||
import commandLineArgumentsInjectable from "./utils/command-line-arguments.injectable";
|
import commandLineArgumentsInjectable from "./utils/command-line-arguments.injectable";
|
||||||
import initializeExtensionsInjectable from "./start-main-application/after-application-is-ready/implementations/initialize-extensions.injectable";
|
import initializeExtensionsInjectable from "./start-main-application/after-application-is-ready/implementations/initialize-extensions.injectable";
|
||||||
import lensResourcesDirInjectable from "../common/vars/lens-resources-dir.injectable";
|
import lensResourcesDirInjectable from "../common/vars/lens-resources-dir.injectable";
|
||||||
import registerFileProtocolInjectable from "./electron-app/register-file-protocol.injectable";
|
import registerFileProtocolInjectable from "./electron-app/register-file-protocol.injectable";
|
||||||
import environmentVariablesInjectable from "../common/utils/environment-variables.injectable";
|
import environmentVariablesInjectable from "../common/utils/environment-variables.injectable";
|
||||||
import disableHardwareAccelerationInjectable from "./electron-app/disable-hardware-acceleration.injectable";
|
|
||||||
import { CatalogCategoryRegistry } from "../common/catalog";
|
import { CatalogCategoryRegistry } from "../common/catalog";
|
||||||
import catalogCategoryRegistryInjectable from "../common/catalog/catalog-category-registry.injectable";
|
import catalogCategoryRegistryInjectable from "../common/catalog/catalog-category-registry.injectable";
|
||||||
import setupIpcMainHandlersInjectable from "./start-main-application/after-application-is-ready/implementations/setup-ipc-main-handlers/setup-ipc-main-handlers.injectable";
|
import setupIpcMainHandlersInjectable from "./start-main-application/after-application-is-ready/implementations/setup-ipc-main-handlers/setup-ipc-main-handlers.injectable";
|
||||||
@ -62,16 +49,27 @@ import setupListenerForRootFrameRenderingInjectable from "./start-main-applicati
|
|||||||
import setupOsThemeUpdatesInjectable from "./start-main-application/after-application-is-ready/implementations/setup-os-theme-updates.injectable";
|
import setupOsThemeUpdatesInjectable from "./start-main-application/after-application-is-ready/implementations/setup-os-theme-updates.injectable";
|
||||||
import setupSentryInjectable from "./start-main-application/after-application-is-ready/implementations/setup-sentry.injectable";
|
import setupSentryInjectable from "./start-main-application/after-application-is-ready/implementations/setup-sentry.injectable";
|
||||||
import setupShellInjectable from "./start-main-application/after-application-is-ready/implementations/setup-shell.injectable";
|
import setupShellInjectable from "./start-main-application/after-application-is-ready/implementations/setup-shell.injectable";
|
||||||
import requestSingleInstanceLockInjectable from "./electron-app/request-single-instance-lock.injectable";
|
|
||||||
import setupSyncingOfWeblinksInjectable from "./start-main-application/after-application-is-ready/implementations/setup-syncing-of-weblinks.injectable";
|
import setupSyncingOfWeblinksInjectable from "./start-main-application/after-application-is-ready/implementations/setup-syncing-of-weblinks.injectable";
|
||||||
import shouldStartHiddenInjectable from "./electron-app/should-start-hidden.injectable";
|
|
||||||
import stopServicesAndExitAppInjectable from "./stop-services-and-exit-app.injectable";
|
import stopServicesAndExitAppInjectable from "./stop-services-and-exit-app.injectable";
|
||||||
import trayInjectable from "./tray/tray.injectable";
|
import trayInjectable from "./tray/tray.injectable";
|
||||||
import applicationMenuInjectable from "./menu/application-menu.injectable";
|
import applicationMenuInjectable from "./menu/application-menu.injectable";
|
||||||
import windowManagerInjectable from "./window-manager.injectable";
|
import windowManagerInjectable from "./window-manager.injectable";
|
||||||
import isDevelopmentInjectable from "../common/vars/is-development.injectable";
|
import isDevelopmentInjectable from "../common/vars/is-development.injectable";
|
||||||
import setupSystemCaInjectable
|
import setupSystemCaInjectable from "./start-main-application/before-application-is-ready/implementations/setup-system-ca.injectable";
|
||||||
from "./start-main-application/before-application-is-ready/implementations/setup-system-ca.injectable";
|
import whenApplicationIsActivatedInjectable from "./electron-app/when-application-is-activated.injectable";
|
||||||
|
import whenApplicationWillQuitInjectable from "./electron-app/when-application-will-quit.injectable";
|
||||||
|
import whenOpeningUrlInjectable from "./electron-app/when-opening-url.injectable";
|
||||||
|
import whenSecondInstanceInjectable from "./electron-app/when-second-instance.injectable";
|
||||||
|
import whenSystemShutdownInjectable from "./electron-app/when-system-shutdown.injectable";
|
||||||
|
import exitAppInjectable from "./electron-app/exit-app.injectable";
|
||||||
|
import setApplicationNameInjectable from "./electron-app/set-application-name.injectable";
|
||||||
|
import getCommandLineSwitchInjectable from "./electron-app/get-command-line-switch.injectable";
|
||||||
|
import requestSingleInstanceLockInjectable from "./electron-app/request-single-instance-lock.injectable";
|
||||||
|
import disableHardwareAccelerationInjectable from "./electron-app/disable-hardware-acceleration.injectable";
|
||||||
|
import shouldStartHiddenInjectable from "./electron-app/should-start-hidden.injectable";
|
||||||
|
import registerProtocolClientInjectable from "./electron-app/register-protocol-client.injectable";
|
||||||
|
import getElectronAppPathInjectable from "./app-paths/get-electron-app-path/get-electron-app-path.injectable";
|
||||||
|
import setElectronAppPathInjectable from "./app-paths/set-electron-app-path/set-electron-app-path.injectable";
|
||||||
|
|
||||||
export const getDiForUnitTesting = (
|
export const getDiForUnitTesting = (
|
||||||
{ doGeneralOverrides } = { doGeneralOverrides: false },
|
{ doGeneralOverrides } = { doGeneralOverrides: false },
|
||||||
@ -93,50 +91,23 @@ export const getDiForUnitTesting = (
|
|||||||
di.preventSideEffects();
|
di.preventSideEffects();
|
||||||
|
|
||||||
if (doGeneralOverrides) {
|
if (doGeneralOverrides) {
|
||||||
di.override(isMacInjectable, () => true);
|
overrideOperatingSystem(di);
|
||||||
di.override(isWindowsInjectable, () => false);
|
overrideRunnablesHavingSideEffects(di);
|
||||||
di.override(isLinuxInjectable, () => false);
|
overrideElectron(di);
|
||||||
|
|
||||||
di.override(isDevelopmentInjectable, () => false);
|
di.override(isDevelopmentInjectable, () => false);
|
||||||
|
di.override(environmentVariablesInjectable, () => ({}));
|
||||||
|
di.override(commandLineArgumentsInjectable, () => []);
|
||||||
|
|
||||||
di.override(getAbsolutePathInjectable, () => getAbsolutePathFake);
|
|
||||||
di.override(joinPathsInjectable, () => joinPathsFake);
|
|
||||||
|
|
||||||
di.override(whenApplicationIsActivatedInjectable, () => () => {});
|
|
||||||
di.override(whenApplicationWillQuitInjectable, () => () => {});
|
|
||||||
di.override(whenOpeningUrlInjectable, () => () => {});
|
|
||||||
di.override(whenSecondInstanceInjectable, () => () => {});
|
|
||||||
di.override(whenSystemShutdownInjectable, () => () => {});
|
|
||||||
di.override(exitAppInjectable, () => () => {});
|
|
||||||
di.override(setApplicationNameInjectable, () => () => {});
|
|
||||||
di.override(getCommandLineSwitchInjectable, () => () => "irrelevant");
|
|
||||||
di.override(isAutoUpdateEnabledInjectable, () => () => false);
|
|
||||||
di.override(registerProtocolClientInjectable, () => () => {});
|
|
||||||
di.override(lensResourcesDirInjectable, () => "/irrelevant");
|
|
||||||
di.override(registerFileProtocolInjectable, () => () => {});
|
|
||||||
di.override(requestSingleInstanceLockInjectable, () => () => true);
|
|
||||||
di.override(disableHardwareAccelerationInjectable, () => () => {});
|
|
||||||
di.override(shouldStartHiddenInjectable, () => true);
|
|
||||||
di.override(stopServicesAndExitAppInjectable, () => () => {});
|
di.override(stopServicesAndExitAppInjectable, () => () => {});
|
||||||
|
di.override(lensResourcesDirInjectable, () => "/irrelevant");
|
||||||
di.override(windowManagerInjectable, () => ({ ensureMainWindow: () => Promise.resolve(null) }));
|
di.override(windowManagerInjectable, () => ({ ensureMainWindow: () => Promise.resolve(null) }));
|
||||||
|
|
||||||
di.override(initializeExtensionsInjectable, () => ({ run: () => {} }));
|
|
||||||
di.override(setupIpcMainHandlersInjectable, () => ({ run: () => {} }));
|
|
||||||
di.override(setupLensProxyInjectable, () => ({ run: () => {} }));
|
|
||||||
di.override(setupListenerForRootFrameRenderingInjectable, () => ({ run: () => {} }));
|
|
||||||
di.override(setupOsThemeUpdatesInjectable, () => ({ run: () => {} }));
|
|
||||||
di.override(setupSentryInjectable, () => ({ run: () => {} }));
|
|
||||||
di.override(setupShellInjectable, () => ({ run: () => {} }));
|
|
||||||
di.override(setupSyncingOfWeblinksInjectable, () => ({ run: () => {} }));
|
|
||||||
di.override(setupSystemCaInjectable, () => ({ run: () => {} }));
|
|
||||||
|
|
||||||
di.override(trayInjectable, () => ({ start: () => {}, stop: () => {} }));
|
di.override(trayInjectable, () => ({ start: () => {}, stop: () => {} }));
|
||||||
di.override(applicationMenuInjectable, () => ({ start: () => {}, stop: () => {} }));
|
di.override(applicationMenuInjectable, () => ({ start: () => {}, stop: () => {} }));
|
||||||
|
|
||||||
di.override(catalogCategoryRegistryInjectable, () => new CatalogCategoryRegistry());
|
di.override(catalogCategoryRegistryInjectable, () => new CatalogCategoryRegistry());
|
||||||
|
|
||||||
di.override(environmentVariablesInjectable, () => ({}));
|
|
||||||
di.override(commandLineArgumentsInjectable, () => []);
|
|
||||||
|
|
||||||
// TODO: Remove usages of globally exported appEventBus to get rid of this
|
// TODO: Remove usages of globally exported appEventBus to get rid of this
|
||||||
di.override(appEventBusInjectable, () => new EventEmitter<[AppEvent]>());
|
di.override(appEventBusInjectable, () => new EventEmitter<[AppEvent]>());
|
||||||
|
|
||||||
@ -151,13 +122,7 @@ export const getDiForUnitTesting = (
|
|||||||
di.override(clusterStoreInjectable, () => ({ provideInitialFromMain: () => {}, getById: (id): Cluster => ({}) as Cluster }) as ClusterStore);
|
di.override(clusterStoreInjectable, () => ({ provideInitialFromMain: () => {}, getById: (id): Cluster => ({}) as Cluster }) as ClusterStore);
|
||||||
di.override(userStoreInjectable, () => ({ startMainReactions: () => {} }) as UserStore);
|
di.override(userStoreInjectable, () => ({ startMainReactions: () => {} }) as UserStore);
|
||||||
|
|
||||||
di.override(
|
di.override(appNameInjectable, () => "some-app-name");
|
||||||
getElectronAppPathInjectable,
|
|
||||||
() => (name: string) => `some-electron-app-path-for-${kebabCase(name)}`,
|
|
||||||
);
|
|
||||||
|
|
||||||
di.override(setElectronAppPathInjectable, () => () => undefined);
|
|
||||||
di.override(appNameInjectable, () => "some-electron-app-name");
|
|
||||||
di.override(registerChannelInjectable, () => () => undefined);
|
di.override(registerChannelInjectable, () => () => undefined);
|
||||||
di.override(directoryForBundledBinariesInjectable, () => "some-bin-directory");
|
di.override(directoryForBundledBinariesInjectable, () => "some-bin-directory");
|
||||||
|
|
||||||
@ -197,3 +162,49 @@ const getInjectableFilePaths = memoize(() => [
|
|||||||
...glob.sync("../extensions/**/*.injectable.{ts,tsx}", { cwd: __dirname }),
|
...glob.sync("../extensions/**/*.injectable.{ts,tsx}", { cwd: __dirname }),
|
||||||
...glob.sync("../common/**/*.injectable.{ts,tsx}", { cwd: __dirname }),
|
...glob.sync("../common/**/*.injectable.{ts,tsx}", { cwd: __dirname }),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
// TODO: Reorganize code in Runnables to get rid of requirement for override
|
||||||
|
const overrideRunnablesHavingSideEffects = (di: DiContainer) => {
|
||||||
|
[
|
||||||
|
initializeExtensionsInjectable,
|
||||||
|
setupIpcMainHandlersInjectable,
|
||||||
|
setupLensProxyInjectable,
|
||||||
|
setupListenerForRootFrameRenderingInjectable,
|
||||||
|
setupOsThemeUpdatesInjectable,
|
||||||
|
setupSentryInjectable,
|
||||||
|
setupShellInjectable,
|
||||||
|
setupSyncingOfWeblinksInjectable,
|
||||||
|
setupSystemCaInjectable,
|
||||||
|
].forEach((injectable) => {
|
||||||
|
di.override(injectable, () => ({ run: () => {} }));
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const overrideOperatingSystem = (di: DiContainer) => {
|
||||||
|
di.override(isMacInjectable, () => true);
|
||||||
|
di.override(isWindowsInjectable, () => false);
|
||||||
|
di.override(isLinuxInjectable, () => false);
|
||||||
|
|
||||||
|
di.override(getAbsolutePathInjectable, () => getAbsolutePathFake);
|
||||||
|
di.override(joinPathsInjectable, () => joinPathsFake);
|
||||||
|
};
|
||||||
|
|
||||||
|
const overrideElectron = (di: DiContainer) => {
|
||||||
|
di.override(whenApplicationIsActivatedInjectable, () => () => {});
|
||||||
|
di.override(whenApplicationWillQuitInjectable, () => () => {});
|
||||||
|
di.override(whenOpeningUrlInjectable, () => () => {});
|
||||||
|
di.override(whenSecondInstanceInjectable, () => () => {});
|
||||||
|
di.override(whenSystemShutdownInjectable, () => () => {});
|
||||||
|
di.override(exitAppInjectable, () => () => {});
|
||||||
|
di.override(setApplicationNameInjectable, () => () => {});
|
||||||
|
di.override(getCommandLineSwitchInjectable, () => () => "irrelevant");
|
||||||
|
di.override(requestSingleInstanceLockInjectable, () => () => true);
|
||||||
|
di.override(disableHardwareAccelerationInjectable, () => () => {});
|
||||||
|
di.override(shouldStartHiddenInjectable, () => true);
|
||||||
|
di.override(registerProtocolClientInjectable, () => () => {});
|
||||||
|
di.override(getElectronAppPathInjectable, () => (name: string) => `some-electron-app-path-for-${kebabCase(name)}`);
|
||||||
|
di.override(setElectronAppPathInjectable, () => () => {});
|
||||||
|
|
||||||
|
di.override(isAutoUpdateEnabledInjectable, () => () => false);
|
||||||
|
di.override(registerFileProtocolInjectable, () => () => {});
|
||||||
|
};
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user