diff --git a/src/main/window-manager.ts b/src/main/window-manager.ts index f34a060bc8..116f02aefe 100644 --- a/src/main/window-manager.ts +++ b/src/main/window-manager.ts @@ -8,7 +8,7 @@ import { makeObservable, observable } from "mobx"; import { app, BrowserWindow, dialog, ipcMain, shell, webContents } from "electron"; import windowStateKeeper from "electron-window-state"; import { appEventBus } from "../common/app-event-bus/event-bus"; -import { BundledExtensionsUpdated, ipcMainOn } from "../common/ipc"; +import { BundledExtensionsLoaded, ipcMainOn } from "../common/ipc"; import { delay, iter, Singleton } from "../common/utils"; import { ClusterFrameInfo, clusterFrameMap } from "../common/cluster-frames"; import { IpcRendererNavigationEvents } from "../renderer/navigation/events"; @@ -165,7 +165,7 @@ export class WindowManager extends Singleton { if (!this.mainWindow) { viewHasLoaded = new Promise(resolve => { - ipcMain.once(BundledExtensionsUpdated, () => resolve()); + ipcMain.once(BundledExtensionsLoaded, () => resolve()); }); await this.initMainWindow(showSplash); } diff --git a/src/renderer/frames/root-frame/init-root-frame/init-root-frame.injectable.ts b/src/renderer/frames/root-frame/init-root-frame/init-root-frame.injectable.ts index 4db5c9619d..24e42dcf6a 100644 --- a/src/renderer/frames/root-frame/init-root-frame/init-root-frame.injectable.ts +++ b/src/renderer/frames/root-frame/init-root-frame/init-root-frame.injectable.ts @@ -5,6 +5,7 @@ import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable"; import { initRootFrame } from "./init-root-frame"; import extensionLoaderInjectable from "../../../../extensions/extension-loader/extension-loader.injectable"; +import ipcRendererInjectable from "../../../app-paths/get-value-from-registered-channel/ipc-renderer/ipc-renderer.injectable"; import bindProtocolAddRouteHandlersInjectable from "../../../protocol-handler/bind-protocol-add-route-handlers/bind-protocol-add-route-handlers.injectable"; import lensProtocolRouterRendererInjectable from "../../../protocol-handler/lens-protocol-router-renderer/lens-protocol-router-renderer.injectable"; import catalogEntityRegistryInjectable from "../../../api/catalog-entity-registry/catalog-entity-registry.injectable"; @@ -17,6 +18,8 @@ const initRootFrameInjectable = getInjectable({ return initRootFrame({ loadExtensions: extensionLoader.loadOnClusterManagerRenderer, + ipcRenderer: di.inject(ipcRendererInjectable), + bindProtocolAddRouteHandlers: di.inject( bindProtocolAddRouteHandlersInjectable, ), diff --git a/src/renderer/frames/root-frame/init-root-frame/init-root-frame.ts b/src/renderer/frames/root-frame/init-root-frame/init-root-frame.ts index 872e7e0565..92de4b231c 100644 --- a/src/renderer/frames/root-frame/init-root-frame/init-root-frame.ts +++ b/src/renderer/frames/root-frame/init-root-frame/init-root-frame.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { delay } from "../../../../common/utils"; -import { broadcastMessage } from "../../../../common/ipc"; +import { broadcastMessage, BundledExtensionsLoaded } from "../../../../common/ipc"; import { registerIpcListeners } from "../../../ipc"; import logger from "../../../../common/logger"; import { unmountComponentAtNode } from "react-dom"; @@ -14,6 +14,9 @@ import type { BundledExtensionsUpdater } from "../../../components/+extensions/e interface Dependencies { loadExtensions: () => Promise; + // TODO: Move usages of third party library behind abstraction + ipcRenderer: { send: (name: string) => void }; + // TODO: Remove dependencies being here only for correct timing of initialization bindProtocolAddRouteHandlers: () => void; lensProtocolRouterRenderer: { init: () => void }; @@ -29,11 +32,13 @@ export const initRootFrame = loadExtensions, bindProtocolAddRouteHandlers, lensProtocolRouterRenderer, + ipcRenderer, catalogEntityRegistry, bundledExtensionsUpdater, }: Dependencies) => async (rootElem: HTMLElement) => { catalogEntityRegistry.init(); + bundledExtensionsUpdater.init(); try { // maximum time to let bundled extensions finish loading @@ -49,7 +54,7 @@ export const initRootFrame = await Promise.race([bundledExtensionsFinished, timeout]); } finally { - bundledExtensionsUpdater.updateAll(); + ipcRenderer.send(BundledExtensionsLoaded); } lensProtocolRouterRenderer.init();