From 25a48f3d7d47f757ee73aee39a88e0cb17dd6a18 Mon Sep 17 00:00:00 2001 From: Janne Savolainen Date: Thu, 28 Apr 2022 12:42:25 +0300 Subject: [PATCH] Make runnables for before application is ready synchronous as this is technical limitation of Electron See: https://github.com/electron/electron/issues/21370 Co-authored-by: Mikko Aspiala Signed-off-by: Janne Savolainen --- .../before-application-is-ready-injection-token.ts | 4 ++-- .../start-main-application.injectable.ts | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/start-main-application/before-application-is-ready/before-application-is-ready-injection-token.ts b/src/main/start-main-application/before-application-is-ready/before-application-is-ready-injection-token.ts index e4e099a42c..33320a16bb 100644 --- a/src/main/start-main-application/before-application-is-ready/before-application-is-ready-injection-token.ts +++ b/src/main/start-main-application/before-application-is-ready/before-application-is-ready-injection-token.ts @@ -3,9 +3,9 @@ * 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"; +import type { RunnableSync } from "../run-many-sync-for"; export const beforeApplicationIsReadyInjectionToken = - getInjectionToken({ + getInjectionToken({ id: "before-application-is-ready", }); diff --git a/src/main/start-main-application/start-main-application.injectable.ts b/src/main/start-main-application/start-main-application.injectable.ts index 21360f7ca6..26450828d1 100644 --- a/src/main/start-main-application/start-main-application.injectable.ts +++ b/src/main/start-main-application/start-main-application.injectable.ts @@ -8,16 +8,20 @@ import electronAppInjectable from "../electron-app/electron-app.injectable"; import { beforeApplicationIsReadyInjectionToken } from "./before-application-is-ready/before-application-is-ready-injection-token"; import { afterApplicationIsReadyInjectionToken } from "./after-application-is-ready/after-application-is-ready-injection-token"; import { runManyFor } from "./run-many-for"; +import { runManySyncFor } from "./run-many-sync-for"; const startMainApplicationInjectable = getInjectable({ id: "start-main-application", instantiate: (di) => { const runMany = runManyFor(di); + const runManySync = runManySyncFor(di); const app = di.inject(electronAppInjectable); return async () => { - await runMany(beforeApplicationIsReadyInjectionToken)(); + // Stuff happening before application is ready needs to be synchronous because of + // https://github.com/electron/electron/issues/21370 + runManySync(beforeApplicationIsReadyInjectionToken)(); await app.whenReady();