From 906172bc29d676ab252602f85627f21bfd03f695 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Fri, 2 Dec 2022 15:47:10 -0500 Subject: [PATCH] Remove use of global shared Electron.App Signed-off-by: Sebastian Malton --- src/common/user-store/user-store.ts | 16 +-------- ...tron-app.global-override-for-injectable.ts | 3 +- .../set-login-item-settings.injectable.ts | 20 +++++++++++ ...etup-reactions-in-user-store.injectable.ts | 26 -------------- .../sync-open-at-login-with-os.injectable.ts | 35 +++++++++++++++++++ 5 files changed, 58 insertions(+), 42 deletions(-) create mode 100644 src/main/electron-app/features/set-login-item-settings.injectable.ts delete mode 100644 src/main/start-main-application/runnables/setup-reactions-in-user-store.injectable.ts create mode 100644 src/main/user-store/sync-open-at-login-with-os.injectable.ts diff --git a/src/common/user-store/user-store.ts b/src/common/user-store/user-store.ts index b19ddadb53..49a03ce6a6 100644 --- a/src/common/user-store/user-store.ts +++ b/src/common/user-store/user-store.ts @@ -3,8 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ -import { app } from "electron"; -import { action, observable, reaction, makeObservable, isObservableArray, isObservableSet, isObservableMap } from "mobx"; +import { action, observable, makeObservable, isObservableArray, isObservableSet, isObservableMap } from "mobx"; import type { BaseStoreDependencies } from "../base-store/base-store"; import { BaseStore } from "../base-store/base-store"; import { getOrInsertSet, toggle, toJS, object } from "../../renderer/utils"; @@ -84,19 +83,6 @@ export class UserStore extends BaseStore /* implements UserStore */ @observable syncKubeconfigEntries!: StoreType; - startMainReactions() { - // open at system start-up - reaction(() => this.openAtLogin, openAtLogin => { - app.setLoginItemSettings({ - openAtLogin, - openAsHidden: true, - args: ["--hidden"], - }); - }, { - fireImmediately: true, - }); - } - /** * Checks if a column (by ID) for a table (by ID) is configured to be hidden * @param tableId The ID of the table to be checked against diff --git a/src/main/electron-app/electron-app.global-override-for-injectable.ts b/src/main/electron-app/electron-app.global-override-for-injectable.ts index eeaa1765b7..ea74c209e1 100644 --- a/src/main/electron-app/electron-app.global-override-for-injectable.ts +++ b/src/main/electron-app/electron-app.global-override-for-injectable.ts @@ -8,4 +8,5 @@ import electronAppInjectable from "./electron-app.injectable"; export default getGlobalOverride(electronAppInjectable, () => ({ getVersion: () => "6.0.0", -} as Electron.App)); + setLoginItemSettings: () => {}, +} as Partial as Electron.App)); diff --git a/src/main/electron-app/features/set-login-item-settings.injectable.ts b/src/main/electron-app/features/set-login-item-settings.injectable.ts new file mode 100644 index 0000000000..c799b3b20f --- /dev/null +++ b/src/main/electron-app/features/set-login-item-settings.injectable.ts @@ -0,0 +1,20 @@ +/** + * 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 type { Settings } from "electron"; +import electronAppInjectable from "../electron-app.injectable"; + +export type SetLoginItemSettings = (settings: Settings) => void; + +const setLoginItemSettingsInjectable = getInjectable({ + id: "set-login-item-settings", + instantiate: (di): SetLoginItemSettings => { + const electronApp = di.inject(electronAppInjectable); + + return (settings) => electronApp.setLoginItemSettings(settings); + }, +}); + +export default setLoginItemSettingsInjectable; diff --git a/src/main/start-main-application/runnables/setup-reactions-in-user-store.injectable.ts b/src/main/start-main-application/runnables/setup-reactions-in-user-store.injectable.ts deleted file mode 100644 index f40c3c8796..0000000000 --- a/src/main/start-main-application/runnables/setup-reactions-in-user-store.injectable.ts +++ /dev/null @@ -1,26 +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 userStoreInjectable from "../../../common/user-store/user-store.injectable"; -import { onLoadOfApplicationInjectionToken } from "../runnable-tokens/on-load-of-application-injection-token"; - -const setupReactionsInUserStoreInjectable = getInjectable({ - id: "setup-reactions-in-user-store", - - instantiate: (di) => { - const userStore = di.inject(userStoreInjectable); - - return { - id: "setup-reactions-in-user-store", - run: () => { - userStore.startMainReactions(); - }, - }; - }, - - injectionToken: onLoadOfApplicationInjectionToken, -}); - -export default setupReactionsInUserStoreInjectable; diff --git a/src/main/user-store/sync-open-at-login-with-os.injectable.ts b/src/main/user-store/sync-open-at-login-with-os.injectable.ts new file mode 100644 index 0000000000..abad89af97 --- /dev/null +++ b/src/main/user-store/sync-open-at-login-with-os.injectable.ts @@ -0,0 +1,35 @@ +/** + * 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 { reaction } from "mobx"; +import userStoreInjectable from "../../common/user-store/user-store.injectable"; +import setLoginItemSettingsInjectable from "../electron-app/features/set-login-item-settings.injectable"; +import { onLoadOfApplicationInjectionToken } from "../start-main-application/runnable-tokens/on-load-of-application-injection-token"; + +const setupSyncOpenAtLoginWithOsInjectable = getInjectable({ + id: "setup-sync-open-at-login-with-os", + instantiate: (di) => { + const setLoginItemSettings = di.inject(setLoginItemSettingsInjectable); + const userStore = di.inject(userStoreInjectable); + + return { + id: "setup-sync-open-at-login-with-os", + run: () => { + reaction(() => userStore.openAtLogin, openAtLogin => { + setLoginItemSettings({ + openAtLogin, + openAsHidden: true, + args: ["--hidden"], + }); + }, { + fireImmediately: true, + }); + }, + }; + }, + injectionToken: onLoadOfApplicationInjectionToken, +}); + +export default setupSyncOpenAtLoginWithOsInjectable;