mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
* Introduce an agnostic way to start application is the Feature Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Introduce directory for application-packages Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Remove non agnostic timeslots from agnostic application Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Introduce empty package for electron main specific stuff for Application Feature Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Introduce electron-main specific timeslots Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Update injectable version Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Update README Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Tweak export names to make them easier to import Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Make starting of application synchronous for Electron main Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Tweak versions in package jsons Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Consolidate name of feature file Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> --------- Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
import { getInjectable, getInjectionToken } from "@ogre-tools/injectable";
|
|
import { runManyFor } from "@ogre-tools/injectable-utils";
|
|
import { beforeApplicationIsLoadingInjectionToken } from "./timeslots/before-application-is-loading-injection-token";
|
|
import { onLoadOfApplicationInjectionToken } from "./timeslots/on-load-of-application-injection-token";
|
|
import { afterApplicationIsLoadedInjectionToken } from "./timeslots/after-application-is-loaded-injection-token";
|
|
|
|
export type StartApplication = () => Promise<void>;
|
|
|
|
export const startApplicationInjectionToken =
|
|
getInjectionToken<StartApplication>({
|
|
id: "start-application-injection-token",
|
|
});
|
|
|
|
const startApplicationInjectable = getInjectable({
|
|
id: "start-application",
|
|
|
|
instantiate: (di): StartApplication => {
|
|
const runManyAsync = runManyFor(di)
|
|
|
|
const beforeApplicationIsLoading = runManyAsync(
|
|
beforeApplicationIsLoadingInjectionToken
|
|
);
|
|
|
|
const onLoadOfApplication = runManyAsync(onLoadOfApplicationInjectionToken);
|
|
|
|
const afterApplicationIsLoaded = runManyAsync(
|
|
afterApplicationIsLoadedInjectionToken
|
|
);
|
|
|
|
return async () => {
|
|
await beforeApplicationIsLoading();
|
|
|
|
await onLoadOfApplication();
|
|
|
|
await afterApplicationIsLoaded();
|
|
};
|
|
},
|
|
|
|
injectionToken: startApplicationInjectionToken,
|
|
});
|
|
|
|
export default startApplicationInjectable;
|