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

More work

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2023-04-05 09:14:09 -04:00
parent f63d10d003
commit c135c1d6fd
20 changed files with 133 additions and 106 deletions

View File

@ -4,7 +4,7 @@
*/
import { getInjectable } from "@ogre-tools/injectable";
import applicationMenuReactivityInjectable from "./application-menu-reactivity.injectable";
import { beforeQuitOfBackEndInjectionToken } from "../../../main/start-main-application/runnable-tokens/phases";
import { onQuitOfBackEndInjectionToken } from "../../../main/start-main-application/runnable-tokens/phases";
const stopApplicationMenuInjectable = getInjectable({
id: "stop-application-menu",
@ -17,7 +17,7 @@ const stopApplicationMenuInjectable = getInjectable({
},
}),
injectionToken: beforeQuitOfBackEndInjectionToken,
injectionToken: onQuitOfBackEndInjectionToken,
});
export default stopApplicationMenuInjectable;

View File

@ -4,7 +4,7 @@
*/
import { getInjectable } from "@ogre-tools/injectable";
import periodicalCheckForUpdatesInjectable from "./periodical-check-for-updates.injectable";
import { beforeQuitOfBackEndInjectionToken } from "../../../../../main/start-main-application/runnable-tokens/phases";
import { onQuitOfBackEndInjectionToken } from "../../../../../main/start-main-application/runnable-tokens/phases";
const stopCheckingForUpdatesInjectable = getInjectable({
id: "stop-checking-for-updates",
@ -19,7 +19,7 @@ const stopCheckingForUpdatesInjectable = getInjectable({
},
}),
injectionToken: beforeQuitOfBackEndInjectionToken,
injectionToken: onQuitOfBackEndInjectionToken,
});
export default stopCheckingForUpdatesInjectable;

View File

@ -4,7 +4,7 @@
*/
import { getInjectable } from "@ogre-tools/injectable";
import watchIfUpdateShouldHappenOnQuitInjectable from "./watch-if-update-should-happen-on-quit.injectable";
import { beforeQuitOfBackEndInjectionToken } from "../../../../main/start-main-application/runnable-tokens/phases";
import { onQuitOfBackEndInjectionToken } from "../../../../main/start-main-application/runnable-tokens/phases";
const stopWatchingIfUpdateShouldHappenOnQuitInjectable = getInjectable({
id: "stop-watching-if-update-should-happen-on-quit",
@ -17,7 +17,7 @@ const stopWatchingIfUpdateShouldHappenOnQuitInjectable = getInjectable({
},
}),
injectionToken: beforeQuitOfBackEndInjectionToken,
injectionToken: onQuitOfBackEndInjectionToken,
});
export default stopWatchingIfUpdateShouldHappenOnQuitInjectable;

View File

@ -5,7 +5,7 @@
import { getInjectable } from "@ogre-tools/injectable";
import extensionInjectable from "../../../../extensions/extension-loader/extension/extension.injectable";
import extensionsInjectable from "../../../../extensions/extensions.injectable";
import { beforeQuitOfBackEndInjectionToken } from "../../../../main/start-main-application/runnable-tokens/phases";
import { onQuitOfBackEndInjectionToken } from "../../../../main/start-main-application/runnable-tokens/phases";
const stopAllExtensionsInjectable = getInjectable({
id: "stop-all-extensions",
@ -21,7 +21,7 @@ const stopAllExtensionsInjectable = getInjectable({
}
},
}),
injectionToken: beforeQuitOfBackEndInjectionToken,
injectionToken: onQuitOfBackEndInjectionToken,
});
export default stopAllExtensionsInjectable;

View File

@ -3,7 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import { beforeQuitOfBackEndInjectionToken } from "../../../main/start-main-application/runnable-tokens/phases";
import { onQuitOfBackEndInjectionToken } from "../../../main/start-main-application/runnable-tokens/phases";
import weblinkVerificationStartableStoppableInjectable from "./weblink-verification.injectable";
const stopValidatingWeblinksInjectable = getInjectable({
@ -15,7 +15,7 @@ const stopValidatingWeblinksInjectable = getInjectable({
weblinkVerificationStartableStoppable.stop();
},
}),
injectionToken: beforeQuitOfBackEndInjectionToken,
injectionToken: onQuitOfBackEndInjectionToken,
});
export default stopValidatingWeblinksInjectable;

View File

@ -6,16 +6,16 @@
import { kebabCase } from "lodash";
import { getGlobalOverride } from "@k8slens/test-utils";
import electronAppInjectable from "./electron-app.injectable";
import EventEmitter from "events";
export default getGlobalOverride(electronAppInjectable, () => {
const commandLineArgs: string[] = [];
const chromiumArgs = new Map<string, string | undefined>();
const appPaths = new Map<string, string>();
const app = ({
const app = Object.assign(new EventEmitter(), {
getVersion: () => "6.0.0",
setLoginItemSettings: () => { },
on: () => app,
whenReady: async () => {},
getPath: (name) => appPaths.get(name) ?? `/some-directory-for-${kebabCase(name)}`,
setPath: (name, value) => appPaths.set(name, value),

View File

@ -0,0 +1,21 @@
/**
* 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";
const isExplicitlyQuittingInjectable = getInjectable({
id: "is-explicitly-quitting",
instantiate: () => {
let value = false;
return {
get: () => value,
set: (newValue: boolean) => {
value = newValue;
},
};
},
});
export default isExplicitlyQuittingInjectable;

View File

@ -3,7 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import { beforeQuitOfBackEndInjectionToken } from "../../start-main-application/runnable-tokens/phases";
import { onQuitOfBackEndInjectionToken } from "../../start-main-application/runnable-tokens/phases";
import lensProtocolRouterMainInjectable from "../../protocol-handler/lens-protocol-router-main/lens-protocol-router-main.injectable";
const cleanUpDeepLinkingInjectable = getInjectable({
@ -17,7 +17,7 @@ const cleanUpDeepLinkingInjectable = getInjectable({
},
}),
injectionToken: beforeQuitOfBackEndInjectionToken,
injectionToken: onQuitOfBackEndInjectionToken,
});
export default cleanUpDeepLinkingInjectable;

View File

@ -0,0 +1,39 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { beforeElectronIsReadyInjectionToken } from "@k8slens/application-for-electron-main";
import { runManySyncFor } from "@k8slens/run-many";
import { getInjectable } from "@ogre-tools/injectable";
import isIntegrationTestingInjectable from "../../../common/vars/is-integration-testing.injectable";
import { afterQuitOfFrontEndInjectionToken } from "../../start-main-application/runnable-tokens/phases";
import electronAppInjectable from "../electron-app.injectable";
import quitAppInjectable from "../features/exit-app.injectable";
import isAutoUpdatingInjectable from "../features/is-auto-updating.injectable";
const setupBehaviourWhenLastWindowClosesInjectable = getInjectable({
id: "setupBehaviourWhenLastWindowCloses",
instantiate: (di) => ({
run: () => {
const runManySync = runManySyncFor(di);
const runRunnablesAfterQuitOfFrontEnd = runManySync(afterQuitOfFrontEndInjectionToken);
const app = di.inject(electronAppInjectable);
const isIntegrationTesting = di.inject(isIntegrationTestingInjectable);
const quitApp = di.inject(quitAppInjectable);
const isAutoUpdating = di.inject(isAutoUpdatingInjectable);
app.on("window-all-closed", () => {
runRunnablesAfterQuitOfFrontEnd();
if (isIntegrationTesting || isAutoUpdating.get()) {
quitApp();
}
});
return undefined;
},
}),
injectionToken: beforeElectronIsReadyInjectionToken,
});
export default setupBehaviourWhenLastWindowClosesInjectable;

View File

@ -0,0 +1,41 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { beforeElectronIsReadyInjectionToken } from "@k8slens/application-for-electron-main";
import { runManyFor } from "@k8slens/run-many";
import { getInjectable } from "@ogre-tools/injectable";
import { once } from "lodash";
import { onQuitOfBackEndInjectionToken } from "../../start-main-application/runnable-tokens/phases";
import electronAppInjectable from "../electron-app.injectable";
const setupCleanupOnQuitOfApplicationInjectable = getInjectable({
id: "setup-cleanup-on-quit-of-application",
instantiate: (di) => ({
run: () => {
const runMany = runManyFor(di);
const runRunnablesBeforeQuitOfBackEnd = runMany(onQuitOfBackEndInjectionToken);
const app = di.inject(electronAppInjectable);
const doAsyncQuit = once(() => void (async () => {
try {
await runRunnablesBeforeQuitOfBackEnd();
app.exit(0);
} catch (error) {
console.error("A beforeQuitOfBackEnd failed!!!!", error);
app.exit(1);
}
})());
app.on("will-quit", (event) => {
event.preventDefault();
doAsyncQuit();
});
return undefined;
},
}),
injectionToken: beforeElectronIsReadyInjectionToken,
});
export default setupCleanupOnQuitOfApplicationInjectable;

View File

@ -1,74 +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 { beforeElectronIsReadyInjectionToken } from "@k8slens/application-for-electron-main";
import { afterQuitOfFrontEndInjectionToken, beforeQuitOfBackEndInjectionToken } from "../../start-main-application/runnable-tokens/phases";
import electronAppInjectable from "../electron-app.injectable";
import isIntegrationTestingInjectable from "../../../common/vars/is-integration-testing.injectable";
import { runManySyncFor, runManyFor } from "@k8slens/run-many";
import quitAppInjectable from "../features/exit-app.injectable";
const setupRunnablesBeforeClosingOfApplicationInjectable = getInjectable({
id: "setup-closing-of-application",
instantiate: (di) => ({
run: () => {
const runManySync = runManySyncFor(di);
const runMany = runManyFor(di);
const runRunnablesAfterQuitOfFrontEnd = runManySync(afterQuitOfFrontEndInjectionToken);
const runRunnablesBeforeQuitOfBackEnd = runMany(beforeQuitOfBackEndInjectionToken);
const app = di.inject(electronAppInjectable);
const isIntegrationTesting = di.inject(isIntegrationTestingInjectable);
const quitApp = di.inject(quitAppInjectable);
let isAsyncQuitting = false;
const doAsyncQuit = () => {
if (isAsyncQuitting) {
return;
}
isAsyncQuitting = true;
void (async () => {
try {
console.log("before runRunnablesBeforeQuitOfBackEnd");
await runRunnablesBeforeQuitOfBackEnd();
console.log("after runRunnablesBeforeQuitOfBackEnd");
app.exit(0);
} catch (error) {
console.error("A beforeQuitOfBackEnd failed!!!!", error);
app.exit(1);
}
})();
};
app.on("window-all-closed", () => {
console.log(`app.on("window-all-closed")`);
runRunnablesAfterQuitOfFrontEnd();
if (isIntegrationTesting) {
quitApp();
}
});
app.on("will-quit", (event) => {
console.log(`app.on("will-quit")`);
event.preventDefault();
doAsyncQuit();
});
app.on("quit", () => {
console.log(`app.on("quit")`);
});
return undefined;
},
}),
injectionToken: beforeElectronIsReadyInjectionToken,
});
export default setupRunnablesBeforeClosingOfApplicationInjectable;

View File

@ -3,7 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import { beforeQuitOfBackEndInjectionToken } from "../start-main-application/runnable-tokens/phases";
import { onQuitOfBackEndInjectionToken } from "../start-main-application/runnable-tokens/phases";
import lensProxyInjectable from "./lens-proxy.injectable";
const closeLensProxyOnQuitInjectable = getInjectable({
@ -15,7 +15,7 @@ const closeLensProxyOnQuitInjectable = getInjectable({
await lensProxy.close();
},
}),
injectionToken: beforeQuitOfBackEndInjectionToken,
injectionToken: onQuitOfBackEndInjectionToken,
});
export default closeLensProxyOnQuitInjectable;

View File

@ -5,7 +5,7 @@
import { getInjectable } from "@ogre-tools/injectable";
import { loggerTransportInjectionToken } from "../../common/logger/transports";
import winstonLoggerInjectable from "../../common/winston-logger.injectable";
import { beforeQuitOfBackEndInjectionToken } from "../start-main-application/runnable-tokens/phases";
import { onQuitOfBackEndInjectionToken } from "../start-main-application/runnable-tokens/phases";
const closeLoggerOnQuitInjectable = getInjectable({
id: "close-file-transport-on-quit",
@ -21,7 +21,7 @@ const closeLoggerOnQuitInjectable = getInjectable({
}
},
}),
injectionToken: beforeQuitOfBackEndInjectionToken,
injectionToken: onQuitOfBackEndInjectionToken,
});
export default closeLoggerOnQuitInjectable;

View File

@ -10,8 +10,8 @@ export const afterQuitOfFrontEndInjectionToken = getInjectionToken<RunnableSync>
id: "after-quit-of-front-end",
});
export const beforeQuitOfBackEndInjectionToken = getInjectionToken<Runnable>({
id: "before-quit-of-back-end",
export const onQuitOfBackEndInjectionToken = getInjectionToken<Runnable>({
id: "on-quit-of-back-end",
});
export const afterWindowIsOpenedInjectionToken = getInjectionToken<Runnable>({

View File

@ -3,7 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import { beforeQuitOfBackEndInjectionToken } from "../runnable-tokens/phases";
import { onQuitOfBackEndInjectionToken } from "../runnable-tokens/phases";
import shellSessionProcessesInjectable from "../../shell-session/processes.injectable";
import prefixedLoggerInjectable from "../../../common/logger/prefixed-logger.injectable";
@ -29,7 +29,7 @@ const cleanUpShellSessionsInjectable = getInjectable({
},
}),
injectionToken: beforeQuitOfBackEndInjectionToken,
injectionToken: onQuitOfBackEndInjectionToken,
});
export default cleanUpShellSessionsInjectable;

View File

@ -3,7 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import { beforeQuitOfBackEndInjectionToken } from "../../runnable-tokens/phases";
import { onQuitOfBackEndInjectionToken } from "../../runnable-tokens/phases";
import kubeconfigSyncManagerInjectable from "../../../catalog-sources/kubeconfig-sync/manager.injectable";
const stopKubeConfigSyncInjectable = getInjectable({
@ -17,7 +17,7 @@ const stopKubeConfigSyncInjectable = getInjectable({
},
}),
injectionToken: beforeQuitOfBackEndInjectionToken,
injectionToken: onQuitOfBackEndInjectionToken,
});
export default stopKubeConfigSyncInjectable;

View File

@ -4,7 +4,7 @@
*/
import { getInjectable } from "@ogre-tools/injectable";
import syncThemeFromOperatingSystemInjectable from "../../electron-app/features/sync-theme-from-operating-system.injectable";
import { beforeQuitOfBackEndInjectionToken } from "../../start-main-application/runnable-tokens/phases";
import { onQuitOfBackEndInjectionToken } from "../../start-main-application/runnable-tokens/phases";
const stopSyncingThemeFromOperatingSystemInjectable = getInjectable({
id: "stop-syncing-theme-from-operating-system",
@ -17,7 +17,7 @@ const stopSyncingThemeFromOperatingSystemInjectable = getInjectable({
},
}),
injectionToken: beforeQuitOfBackEndInjectionToken,
injectionToken: onQuitOfBackEndInjectionToken,
});
export default stopSyncingThemeFromOperatingSystemInjectable;

View File

@ -4,7 +4,7 @@
*/
import { getInjectable } from "@ogre-tools/injectable";
import electronTrayInjectable from "./electron-tray.injectable";
import { beforeQuitOfBackEndInjectionToken } from "../../start-main-application/runnable-tokens/phases";
import { onQuitOfBackEndInjectionToken } from "../../start-main-application/runnable-tokens/phases";
import stopReactiveTrayMenuItemsInjectable from "../reactive-tray-menu-items/stop-reactive-tray-menu-items.injectable";
const stopTrayInjectable = getInjectable({
@ -19,7 +19,7 @@ const stopTrayInjectable = getInjectable({
runAfter: stopReactiveTrayMenuItemsInjectable,
}),
injectionToken: beforeQuitOfBackEndInjectionToken,
injectionToken: onQuitOfBackEndInjectionToken,
});
export default stopTrayInjectable;

View File

@ -3,7 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import { beforeQuitOfBackEndInjectionToken } from "../../start-main-application/runnable-tokens/phases";
import { onQuitOfBackEndInjectionToken } from "../../start-main-application/runnable-tokens/phases";
import reactiveTrayMenuIconInjectable from "./reactive.injectable";
const stopReactiveTrayMenuIconInjectable = getInjectable({
@ -17,7 +17,7 @@ const stopReactiveTrayMenuIconInjectable = getInjectable({
},
}),
injectionToken: beforeQuitOfBackEndInjectionToken,
injectionToken: onQuitOfBackEndInjectionToken,
});
export default stopReactiveTrayMenuIconInjectable;

View File

@ -4,7 +4,7 @@
*/
import { getInjectable } from "@ogre-tools/injectable";
import reactiveTrayMenuItemsInjectable from "./reactive-tray-menu-items.injectable";
import { beforeQuitOfBackEndInjectionToken } from "../../start-main-application/runnable-tokens/phases";
import { onQuitOfBackEndInjectionToken } from "../../start-main-application/runnable-tokens/phases";
const stopReactiveTrayMenuItemsInjectable = getInjectable({
id: "stop-reactive-tray-menu-items",
@ -17,7 +17,7 @@ const stopReactiveTrayMenuItemsInjectable = getInjectable({
},
}),
injectionToken: beforeQuitOfBackEndInjectionToken,
injectionToken: onQuitOfBackEndInjectionToken,
});
export default stopReactiveTrayMenuItemsInjectable;