From 8ee65f841e7dee33705b361b77ae554e91636a16 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Wed, 5 Apr 2023 09:33:27 -0400 Subject: [PATCH] chore: Move is auto updating state to own injectable Signed-off-by: Sebastian Malton --- .../features/is-auto-updating.injectable.ts | 21 +++++++++++++++ ...up-tracking-is-auto-updating.injectable.ts | 27 +++++++++++++++++++ ...efore-closing-of-application.injectable.ts | 11 +++----- 3 files changed, 51 insertions(+), 8 deletions(-) create mode 100644 packages/core/src/main/electron-app/features/is-auto-updating.injectable.ts create mode 100644 packages/core/src/main/electron-app/features/setup-tracking-is-auto-updating.injectable.ts diff --git a/packages/core/src/main/electron-app/features/is-auto-updating.injectable.ts b/packages/core/src/main/electron-app/features/is-auto-updating.injectable.ts new file mode 100644 index 0000000000..7f8d192efc --- /dev/null +++ b/packages/core/src/main/electron-app/features/is-auto-updating.injectable.ts @@ -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 isAutoUpdatingInjectable = getInjectable({ + id: "is-auto-updating", + instantiate: () => { + let value = false; + + return { + get: () => value, + setAsUpdating: () => { + value = true; + }, + }; + }, +}); + +export default isAutoUpdatingInjectable; diff --git a/packages/core/src/main/electron-app/features/setup-tracking-is-auto-updating.injectable.ts b/packages/core/src/main/electron-app/features/setup-tracking-is-auto-updating.injectable.ts new file mode 100644 index 0000000000..585c2c0f9c --- /dev/null +++ b/packages/core/src/main/electron-app/features/setup-tracking-is-auto-updating.injectable.ts @@ -0,0 +1,27 @@ +/** + * 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 { getInjectable } from "@ogre-tools/injectable"; +import autoUpdaterInjectable from "./auto-updater.injectable"; +import isAutoUpdatingInjectable from "./is-auto-updating.injectable"; + +const setupTrackingOfAutoUpdatingInjectable = getInjectable({ + id: "setup-tracking-of-auto-updating", + instantiate: (di) => ({ + run: () => { + const autoUpdater = di.inject(autoUpdaterInjectable); + const isAutoUpdating = di.inject(isAutoUpdatingInjectable); + + autoUpdater.once("before-quit-for-update", () => { + isAutoUpdating.setAsUpdating(); + }); + + return undefined; + }, + }), + injectionToken: beforeElectronIsReadyInjectionToken, +}); + +export default setupTrackingOfAutoUpdatingInjectable; diff --git a/packages/core/src/main/electron-app/runnables/setup-runnables-before-closing-of-application.injectable.ts b/packages/core/src/main/electron-app/runnables/setup-runnables-before-closing-of-application.injectable.ts index a65e36622d..7c53690143 100644 --- a/packages/core/src/main/electron-app/runnables/setup-runnables-before-closing-of-application.injectable.ts +++ b/packages/core/src/main/electron-app/runnables/setup-runnables-before-closing-of-application.injectable.ts @@ -7,8 +7,8 @@ import { beforeElectronIsReadyInjectionToken } from "@k8slens/application-for-el import { afterQuitOfFrontEndInjectionToken, onQuitOfBackEndInjectionToken } from "../../start-main-application/runnable-tokens/phases"; import electronAppInjectable from "../electron-app.injectable"; import isIntegrationTestingInjectable from "../../../common/vars/is-integration-testing.injectable"; -import autoUpdaterInjectable from "../features/auto-updater.injectable"; import { runManySyncFor, runManyFor } from "@k8slens/run-many"; +import isAutoUpdatingInjectable from "../features/is-auto-updating.injectable"; const setupRunnablesBeforeClosingOfApplicationInjectable = getInjectable({ id: "setup-closing-of-application", @@ -21,12 +21,7 @@ const setupRunnablesBeforeClosingOfApplicationInjectable = getInjectable({ const runOnQuitOfBackEnd = runMany(onQuitOfBackEndInjectionToken); const app = di.inject(electronAppInjectable); const isIntegrationTesting = di.inject(isIntegrationTestingInjectable); - const autoUpdater = di.inject(autoUpdaterInjectable); - let isAutoUpdating = false; - - autoUpdater.on("before-quit-for-update", () => { - isAutoUpdating = true; - }); + const isAutoUpdating = di.inject(isAutoUpdatingInjectable); app.on("will-quit", () => { runAfterQuitOfFrontEnd(); @@ -56,7 +51,7 @@ const setupRunnablesBeforeClosingOfApplicationInjectable = getInjectable({ runAfterQuitOfFrontEnd(); event.preventDefault(); - if (isIntegrationTesting || isAutoUpdating) { + if (isIntegrationTesting || isAutoUpdating.get()) { doAsyncQuit(event); } });