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

Make quit triggered by auto update manifest as hard quit instead of just soft quit

Soft quit is the stand-by quit where only the renderer quits. Hard quit is the full quit of also main.

Co-authored-by: Janne Savolainen <janne.savolainen@live.fi>

Signed-off-by: Iku-turso <mikko.aspiala@gmail.com>
This commit is contained in:
Iku-turso 2022-04-13 14:42:11 +03:00 committed by Janne Savolainen
parent c90ab671ff
commit f838a4eab5
No known key found for this signature in database
GPG Key ID: 8C6CFB2FFFE8F68A
3 changed files with 35 additions and 9 deletions

View File

@ -0,0 +1,14 @@
/**
* 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 { autoUpdater } from "electron";
const autoUpdaterInjectable = getInjectable({
id: "auto-updater",
instantiate: () => autoUpdater,
causesSideEffects: true,
});
export default autoUpdaterInjectable;

View File

@ -4,9 +4,12 @@
*/
import { getInjectable } from "@ogre-tools/injectable";
import electronAppInjectable from "./electron-app.injectable";
import isIntegrationTestingInjectable from "../../common/vars/is-integration-testing.injectable";
import autoUpdaterInjectable from "./auto-updater.injectable";
interface CallbackArgs {
cancel: () => void;
shouldOnlySoftQuit: boolean;
}
const whenApplicationWillQuitInjectable = getInjectable({
@ -15,10 +18,25 @@ const whenApplicationWillQuitInjectable = getInjectable({
instantiate: (di) => {
const app = di.inject(electronAppInjectable);
const isIntegrationTesting = di.inject(isIntegrationTestingInjectable);
const autoUpdater = di.inject(autoUpdaterInjectable);
let isAutoUpdating = false;
return (callback: (args: CallbackArgs) => void) => {
autoUpdater.on("before-quit-for-update", () => {
isAutoUpdating = true;
});
app.on("will-quit", (event) => {
const shouldHardQuit = isIntegrationTesting || isAutoUpdating;
callback({
cancel: () => { event.preventDefault(); },
cancel: () => {
event.preventDefault();
},
shouldOnlySoftQuit: !shouldHardQuit,
});
});
};

View File

@ -8,7 +8,6 @@ import { beforeApplicationSoftQuitInjectionToken } from "../../before-applicatio
import { runManyFor } from "../../run-many-for";
import whenApplicationWillQuitInjectable from "../../../electron-app/when-application-will-quit.injectable";
import { beforeApplicationHardQuitInjectionToken } from "../../before-application-hard-quit/before-application-hard-quit-injection-token";
import isIntegrationTestingInjectable from "../../../../common/vars/is-integration-testing.injectable";
const setupClosingOfApplicationInjectable = getInjectable({
id: "setup-closing-of-application",
@ -28,17 +27,12 @@ const setupClosingOfApplicationInjectable = getInjectable({
beforeApplicationHardQuitInjectionToken,
);
const isIntegrationTesting = di.inject(isIntegrationTestingInjectable);
return {
run: () => {
whenApplicationWillQuit(async ({ cancel: cancelNativeQuit }) => {
whenApplicationWillQuit(async ({ cancel: cancelNativeQuit, shouldOnlySoftQuit }) => {
await runRunnablesBeforeApplicationSoftQuit();
// &&!autoUpdateIsRunning) {
const shouldDoOnlySoftQuit = !isIntegrationTesting;
if (shouldDoOnlySoftQuit) {
if (shouldOnlySoftQuit) {
cancelNativeQuit();
} else {
await runRunnablesBeforeApplicationHardQuit();