Files
SubMiner/src/core/services/startup-lifecycle-hooks-runtime-service.ts

45 lines
1.4 KiB
TypeScript

import { AppLifecycleDepsRuntimeOptions } from "./app-lifecycle-deps-runtime-service";
import {
AppReadyRuntimeDeps,
runAppReadyRuntimeService,
} from "./app-ready-runtime-service";
import {
AppShutdownRuntimeDeps,
runAppShutdownRuntimeService,
} from "./app-shutdown-runtime-service";
import {
createStartupAppReadyDepsRuntimeService,
createStartupAppShutdownDepsRuntimeService,
} from "./startup-lifecycle-runtime-deps-service";
type StartupLifecycleHookDeps = Pick<
AppLifecycleDepsRuntimeOptions,
"onReady" | "onWillQuitCleanup" | "shouldRestoreWindowsOnActivate" | "restoreWindowsOnActivate"
>;
export interface StartupLifecycleHooksRuntimeOptions {
appReadyDeps: AppReadyRuntimeDeps;
appShutdownDeps: AppShutdownRuntimeDeps;
shouldRestoreWindowsOnActivate: () => boolean;
restoreWindowsOnActivate: () => void;
}
export function createStartupLifecycleHooksRuntimeService(
options: StartupLifecycleHooksRuntimeOptions,
): StartupLifecycleHookDeps {
return {
onReady: async () => {
await runAppReadyRuntimeService(
createStartupAppReadyDepsRuntimeService(options.appReadyDeps),
);
},
onWillQuitCleanup: () => {
runAppShutdownRuntimeService(
createStartupAppShutdownDepsRuntimeService(options.appShutdownDeps),
);
},
shouldRestoreWindowsOnActivate: options.shouldRestoreWindowsOnActivate,
restoreWindowsOnActivate: options.restoreWindowsOnActivate,
};
}