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

Fix application quit by calling Electron's event.preventDefault in a very specific way and preventing async

Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com>

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
This commit is contained in:
Janne Savolainen 2022-04-28 14:00:14 +03:00
parent 98cecaa91c
commit b3dab6b781
No known key found for this signature in database
GPG Key ID: 8C6CFB2FFFE8F68A
3 changed files with 11 additions and 10 deletions

View File

@ -5,17 +5,17 @@
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import { beforeApplicationIsReadyInjectionToken } from "../../start-main-application/before-application-is-ready/before-application-is-ready-injection-token"; import { beforeApplicationIsReadyInjectionToken } from "../../start-main-application/before-application-is-ready/before-application-is-ready-injection-token";
import { beforeQuitOfFrontEndInjectionToken } from "../../start-main-application/before-quit-of-front-end/before-quit-of-front-end-injection-token"; import { beforeQuitOfFrontEndInjectionToken } from "../../start-main-application/before-quit-of-front-end/before-quit-of-front-end-injection-token";
import { runManyFor } from "../../start-main-application/run-many-for";
import { beforeQuitOfBackEndInjectionToken } from "../../start-main-application/before-quit-of-back-end/before-quit-of-back-end-injection-token"; import { beforeQuitOfBackEndInjectionToken } from "../../start-main-application/before-quit-of-back-end/before-quit-of-back-end-injection-token";
import electronAppInjectable from "../electron-app.injectable"; import electronAppInjectable from "../electron-app.injectable";
import isIntegrationTestingInjectable from "../../../common/vars/is-integration-testing.injectable"; import isIntegrationTestingInjectable from "../../../common/vars/is-integration-testing.injectable";
import autoUpdaterInjectable from "../features/auto-updater.injectable"; import autoUpdaterInjectable from "../features/auto-updater.injectable";
import { runManySyncFor } from "../../start-main-application/run-many-sync-for";
const setupRunnablesBeforeClosingOfApplicationInjectable = getInjectable({ const setupRunnablesBeforeClosingOfApplicationInjectable = getInjectable({
id: "setup-closing-of-application", id: "setup-closing-of-application",
instantiate: (di) => { instantiate: (di) => {
const runMany = runManyFor(di); const runMany = runManySyncFor(di);
const runRunnablesBeforeQuitOfFrontEnd = runMany( const runRunnablesBeforeQuitOfFrontEnd = runMany(
beforeQuitOfFrontEndInjectionToken, beforeQuitOfFrontEndInjectionToken,
@ -38,15 +38,16 @@ const setupRunnablesBeforeClosingOfApplicationInjectable = getInjectable({
isAutoUpdating = true; isAutoUpdating = true;
}); });
app.on("will-quit", async ({ preventDefault: cancelNativeQuit }) => { app.on("will-quit", (event) => {
await runRunnablesBeforeQuitOfFrontEnd(); runRunnablesBeforeQuitOfFrontEnd();
const shouldQuitBackEnd = isIntegrationTesting || isAutoUpdating; const shouldQuitBackEnd = isIntegrationTesting || isAutoUpdating;
if (shouldQuitBackEnd) { if (shouldQuitBackEnd) {
await runRunnablesBeforeQuitOfBackEnd(); runRunnablesBeforeQuitOfBackEnd();
} else { } else {
cancelNativeQuit(); // IMPORTANT: This cannot be destructured as it would break binding of "this" for the Electron event
event.preventDefault();
} }
}); });
}, },

View File

@ -3,9 +3,9 @@
* 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 { getInjectionToken } from "@ogre-tools/injectable"; import { getInjectionToken } from "@ogre-tools/injectable";
import type { Runnable } from "../run-many-for"; import type { RunnableSync } from "../run-many-sync-for";
export const beforeQuitOfBackEndInjectionToken = export const beforeQuitOfBackEndInjectionToken =
getInjectionToken<Runnable>({ getInjectionToken<RunnableSync>({
id: "before-quit-of-back-end", id: "before-quit-of-back-end",
}); });

View File

@ -3,9 +3,9 @@
* 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 { getInjectionToken } from "@ogre-tools/injectable"; import { getInjectionToken } from "@ogre-tools/injectable";
import type { Runnable } from "../run-many-for"; import type { RunnableSync } from "../run-many-sync-for";
export const beforeQuitOfFrontEndInjectionToken = export const beforeQuitOfFrontEndInjectionToken =
getInjectionToken<Runnable>({ getInjectionToken<RunnableSync>({
id: "before-quit-of-front-end", id: "before-quit-of-front-end",
}); });