mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Abstract event of device shutdown from electron
Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com> Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
This commit is contained in:
parent
5e12e783d4
commit
c36aaa557e
@ -6,8 +6,8 @@ import { getInjectable } from "@ogre-tools/injectable";
|
|||||||
import electronAppInjectable from "./electron-app.injectable";
|
import electronAppInjectable from "./electron-app.injectable";
|
||||||
import type { ActivationArgs } from "../start-main-application/after-application-activation/after-application-activation-injection-token";
|
import type { ActivationArgs } from "../start-main-application/after-application-activation/after-application-activation-injection-token";
|
||||||
|
|
||||||
const onApplicationActivateInjectable = getInjectable({
|
const afterApplicationActivationInjectable = getInjectable({
|
||||||
id: "on-application-activate",
|
id: "after-application-activation",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const app = di.inject(electronAppInjectable);
|
const app = di.inject(electronAppInjectable);
|
||||||
@ -22,4 +22,4 @@ const onApplicationActivateInjectable = getInjectable({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
export default onApplicationActivateInjectable;
|
export default afterApplicationActivationInjectable;
|
||||||
@ -5,18 +5,18 @@
|
|||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import powerMonitorInjectable from "./power-monitor.injectable";
|
import powerMonitorInjectable from "./power-monitor.injectable";
|
||||||
|
|
||||||
const whenSystemShutdownInjectable = getInjectable({
|
const beforeDeviceShutdownInjectable = getInjectable({
|
||||||
id: "when-system-shutdown",
|
id: "before-device-shutdown",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const powerMonitor = di.inject(powerMonitorInjectable);
|
const powerMonitor = di.inject(powerMonitorInjectable);
|
||||||
|
|
||||||
return (callback: () => void) => {
|
return (callback: () => Promise<void> | void) => {
|
||||||
powerMonitor.on("shutdown", () => {
|
powerMonitor.on("shutdown", async () => {
|
||||||
callback();
|
await callback();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
export default whenSystemShutdownInjectable;
|
export default beforeDeviceShutdownInjectable;
|
||||||
@ -59,7 +59,6 @@ import setupSystemCaInjectable from "./start-main-application/before-application
|
|||||||
import whenApplicationWillQuitInjectable from "./electron-app/when-application-will-quit.injectable";
|
import whenApplicationWillQuitInjectable from "./electron-app/when-application-will-quit.injectable";
|
||||||
import whenOpeningUrlInjectable from "./electron-app/when-opening-url.injectable";
|
import whenOpeningUrlInjectable from "./electron-app/when-opening-url.injectable";
|
||||||
import whenSecondInstanceInjectable from "./electron-app/when-second-instance.injectable";
|
import whenSecondInstanceInjectable from "./electron-app/when-second-instance.injectable";
|
||||||
import whenSystemShutdownInjectable from "./electron-app/when-system-shutdown.injectable";
|
|
||||||
import exitAppInjectable from "./electron-app/exit-app.injectable";
|
import exitAppInjectable from "./electron-app/exit-app.injectable";
|
||||||
import setApplicationNameInjectable from "./electron-app/set-application-name.injectable";
|
import setApplicationNameInjectable from "./electron-app/set-application-name.injectable";
|
||||||
import getCommandLineSwitchInjectable from "./electron-app/get-command-line-switch.injectable";
|
import getCommandLineSwitchInjectable from "./electron-app/get-command-line-switch.injectable";
|
||||||
@ -69,7 +68,8 @@ import shouldStartHiddenInjectable from "./electron-app/should-start-hidden.inje
|
|||||||
import registerProtocolClientInjectable from "./electron-app/register-protocol-client.injectable";
|
import registerProtocolClientInjectable from "./electron-app/register-protocol-client.injectable";
|
||||||
import getElectronAppPathInjectable from "./app-paths/get-electron-app-path/get-electron-app-path.injectable";
|
import getElectronAppPathInjectable from "./app-paths/get-electron-app-path/get-electron-app-path.injectable";
|
||||||
import setElectronAppPathInjectable from "./app-paths/set-electron-app-path/set-electron-app-path.injectable";
|
import setElectronAppPathInjectable from "./app-paths/set-electron-app-path/set-electron-app-path.injectable";
|
||||||
import onApplicationActivateInjectable from "./electron-app/on-application-activate.injectable";
|
import afterApplicationActivationInjectable from "./electron-app/after-application-activation.injectable";
|
||||||
|
import beforeDeviceShutdownInjectable from "./electron-app/before-device-shutdown.injectable";
|
||||||
|
|
||||||
export const getDiForUnitTesting = (
|
export const getDiForUnitTesting = (
|
||||||
{ doGeneralOverrides } = { doGeneralOverrides: false },
|
{ doGeneralOverrides } = { doGeneralOverrides: false },
|
||||||
@ -190,11 +190,11 @@ const overrideOperatingSystem = (di: DiContainer) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const overrideElectron = (di: DiContainer) => {
|
const overrideElectron = (di: DiContainer) => {
|
||||||
di.override(onApplicationActivateInjectable, () => () => {});
|
di.override(afterApplicationActivationInjectable, () => () => {});
|
||||||
di.override(whenApplicationWillQuitInjectable, () => () => {});
|
di.override(whenApplicationWillQuitInjectable, () => () => {});
|
||||||
di.override(whenOpeningUrlInjectable, () => () => {});
|
di.override(whenOpeningUrlInjectable, () => () => {});
|
||||||
di.override(whenSecondInstanceInjectable, () => () => {});
|
di.override(whenSecondInstanceInjectable, () => () => {});
|
||||||
di.override(whenSystemShutdownInjectable, () => () => {});
|
di.override(beforeDeviceShutdownInjectable, () => () => {});
|
||||||
di.override(exitAppInjectable, () => () => {});
|
di.override(exitAppInjectable, () => () => {});
|
||||||
di.override(setApplicationNameInjectable, () => () => {});
|
di.override(setApplicationNameInjectable, () => () => {});
|
||||||
di.override(getCommandLineSwitchInjectable, () => () => "irrelevant");
|
di.override(getCommandLineSwitchInjectable, () => () => "irrelevant");
|
||||||
|
|||||||
@ -4,8 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import { runManyFor } from "../../run-many-for";
|
import { runManyFor } from "../../run-many-for";
|
||||||
import onApplicationActivateInjectable from "../../../electron-app/on-application-activate.injectable";
|
import afterApplicationActivationInjectable from "../../../electron-app/after-application-activation.injectable";
|
||||||
import type { ActivationArgs } from "../../after-application-activation/after-application-activation-injection-token";
|
|
||||||
import { afterApplicationActivationInjectionToken } from "../../after-application-activation/after-application-activation-injection-token";
|
import { afterApplicationActivationInjectionToken } from "../../after-application-activation/after-application-activation-injection-token";
|
||||||
import { afterApplicationIsReadyInjectionToken } from "../after-application-is-ready-injection-token";
|
import { afterApplicationIsReadyInjectionToken } from "../after-application-is-ready-injection-token";
|
||||||
|
|
||||||
@ -13,14 +12,12 @@ const setupApplicationActivationEventsInjectable = getInjectable({
|
|||||||
id: "setup-application-activation-events",
|
id: "setup-application-activation-events",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const onApplicationActivate = di.inject(onApplicationActivateInjectable);
|
const afterApplicationActivation = di.inject(afterApplicationActivationInjectable);
|
||||||
const runRunnablesAfterApplicationActivation = runManyFor(di)(afterApplicationActivationInjectionToken);
|
const runRunnables = runManyFor(di)(afterApplicationActivationInjectionToken);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
run: () => {
|
run: () => {
|
||||||
onApplicationActivate(async (activationArgs: ActivationArgs) => {
|
afterApplicationActivation(runRunnables);
|
||||||
await runRunnablesAfterApplicationActivation(activationArgs);
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|||||||
@ -0,0 +1,28 @@
|
|||||||
|
/**
|
||||||
|
* 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 { runManyFor } from "../../run-many-for";
|
||||||
|
import { afterApplicationIsReadyInjectionToken } from "../after-application-is-ready-injection-token";
|
||||||
|
import beforeDeviceShutdownInjectable from "../../../electron-app/before-device-shutdown.injectable";
|
||||||
|
import { beforeDeviceShutdownInjectionToken } from "../../before-device-shutdown/before-device-shutdown-injection-token";
|
||||||
|
|
||||||
|
const setupDeviceShutdownEventsInjectable = getInjectable({
|
||||||
|
id: "setup-device-shutdown-events",
|
||||||
|
|
||||||
|
instantiate: (di) => {
|
||||||
|
const beforeDeviceShutdown = di.inject(beforeDeviceShutdownInjectable);
|
||||||
|
const runRunnablesBeforeDeviceShutdown = runManyFor(di)(beforeDeviceShutdownInjectionToken);
|
||||||
|
|
||||||
|
return {
|
||||||
|
run: () => {
|
||||||
|
beforeDeviceShutdown(runRunnablesBeforeDeviceShutdown);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
injectionToken: afterApplicationIsReadyInjectionToken,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default setupDeviceShutdownEventsInjectable;
|
||||||
@ -1,27 +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 exitAppInjectable from "../../../electron-app/exit-app.injectable";
|
|
||||||
import { beforeApplicationIsReadyInjectionToken } from "../before-application-is-ready-injection-token";
|
|
||||||
import whenSystemShutdownInjectable from "../../../electron-app/when-system-shutdown.injectable";
|
|
||||||
|
|
||||||
const setupShutdownOfApplicationWhenSystemShutdownsInjectable = getInjectable({
|
|
||||||
id: "setup-shutdown-of-application-when-system-shutdowns",
|
|
||||||
|
|
||||||
instantiate: (di) => {
|
|
||||||
const exitApp = di.inject(exitAppInjectable);
|
|
||||||
const whenSystemShutdown = di.inject(whenSystemShutdownInjectable);
|
|
||||||
|
|
||||||
return {
|
|
||||||
run: () => {
|
|
||||||
whenSystemShutdown(exitApp);
|
|
||||||
},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
injectionToken: beforeApplicationIsReadyInjectionToken,
|
|
||||||
});
|
|
||||||
|
|
||||||
export default setupShutdownOfApplicationWhenSystemShutdownsInjectable;
|
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectionToken } from "@ogre-tools/injectable";
|
||||||
|
import type { Runnable } from "../run-many-for";
|
||||||
|
|
||||||
|
export const beforeDeviceShutdownInjectionToken = getInjectionToken<Runnable>({
|
||||||
|
id: "before-device-shutdown",
|
||||||
|
});
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
/**
|
||||||
|
* 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 exitAppInjectable from "../../../electron-app/exit-app.injectable";
|
||||||
|
import { beforeDeviceShutdownInjectionToken } from "../before-device-shutdown-injection-token";
|
||||||
|
|
||||||
|
const exitAppBeforeShutdownInjectable = getInjectable({
|
||||||
|
id: "exit-app-before-shutdown",
|
||||||
|
|
||||||
|
instantiate: (di) => {
|
||||||
|
const exitApp = di.inject(exitAppInjectable);
|
||||||
|
|
||||||
|
return {
|
||||||
|
run: () => {
|
||||||
|
exitApp();
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
injectionToken: beforeDeviceShutdownInjectionToken,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default exitAppBeforeShutdownInjectable;
|
||||||
Loading…
Reference in New Issue
Block a user