mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Move main frame init extensions to runnable
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
fcb214001f
commit
09c5f3777e
@ -23,7 +23,7 @@ const initClusterFrameInjectable = getInjectable({
|
|||||||
|
|
||||||
assert(hostedCluster, "This can only be injected within a cluster frame");
|
assert(hostedCluster, "This can only be injected within a cluster frame");
|
||||||
|
|
||||||
const loadExtensions = di.inject(autoInitExtensionsInjectable);
|
const autoInitExtensions = di.inject(autoInitExtensionsInjectable);
|
||||||
const catalogEntityRegistry = di.inject(catalogEntityRegistryInjectable);
|
const catalogEntityRegistry = di.inject(catalogEntityRegistryInjectable);
|
||||||
const frameRoutingId = di.inject(frameRoutingIdInjectable);
|
const frameRoutingId = di.inject(frameRoutingIdInjectable);
|
||||||
const emitAppEvent = di.inject(emitAppEventInjectable);
|
const emitAppEvent = di.inject(emitAppEventInjectable);
|
||||||
@ -45,7 +45,7 @@ const initClusterFrameInjectable = getInjectable({
|
|||||||
when(
|
when(
|
||||||
() => catalogEntityRegistry.items.get().length > 0,
|
() => catalogEntityRegistry.items.get().length > 0,
|
||||||
() =>
|
() =>
|
||||||
loadExtensions(),
|
autoInitExtensions(),
|
||||||
{
|
{
|
||||||
timeout: 15_000,
|
timeout: 15_000,
|
||||||
onError: (error) => {
|
onError: (error) => {
|
||||||
|
|||||||
@ -7,41 +7,19 @@ import bindProtocolAddRouteHandlersInjectable from "../../protocol-handler/bind-
|
|||||||
import lensProtocolRouterRendererInjectable from "../../protocol-handler/lens-protocol-router-renderer/lens-protocol-router-renderer.injectable";
|
import lensProtocolRouterRendererInjectable from "../../protocol-handler/lens-protocol-router-renderer/lens-protocol-router-renderer.injectable";
|
||||||
import registerIpcListenersInjectable from "../../ipc/register-ipc-listeners.injectable";
|
import registerIpcListenersInjectable from "../../ipc/register-ipc-listeners.injectable";
|
||||||
import loggerInjectable from "../../../common/logger.injectable";
|
import loggerInjectable from "../../../common/logger.injectable";
|
||||||
import { delay } from "../../../common/utils";
|
|
||||||
import { broadcastMessage } from "../../../common/ipc";
|
import { broadcastMessage } from "../../../common/ipc";
|
||||||
import sendBundledExtensionsLoadedInjectable from "../../../features/extensions/loader/renderer/send-bundled-extensions-loaded.injectable";
|
|
||||||
import autoInitExtensionsInjectable from "../../../features/extensions/loader/common/auto-init-extensions.injectable";
|
|
||||||
import unmountRootComponentInjectable from "../../window/unmount-root-component.injectable";
|
import unmountRootComponentInjectable from "../../window/unmount-root-component.injectable";
|
||||||
|
|
||||||
const initRootFrameInjectable = getInjectable({
|
const initRootFrameInjectable = getInjectable({
|
||||||
id: "init-root-frame",
|
id: "init-root-frame",
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const autoInitExtensions = di.inject(autoInitExtensionsInjectable);
|
|
||||||
const registerIpcListeners = di.inject(registerIpcListenersInjectable);
|
const registerIpcListeners = di.inject(registerIpcListenersInjectable);
|
||||||
const bindProtocolAddRouteHandlers = di.inject(bindProtocolAddRouteHandlersInjectable);
|
const bindProtocolAddRouteHandlers = di.inject(bindProtocolAddRouteHandlersInjectable);
|
||||||
const lensProtocolRouterRenderer = di.inject(lensProtocolRouterRendererInjectable);
|
const lensProtocolRouterRenderer = di.inject(lensProtocolRouterRendererInjectable);
|
||||||
const logger = di.inject(loggerInjectable);
|
const logger = di.inject(loggerInjectable);
|
||||||
const sendBundledExtensionsLoaded = di.inject(sendBundledExtensionsLoadedInjectable);
|
|
||||||
const unmountRootComponent = di.inject(unmountRootComponentInjectable);
|
const unmountRootComponent = di.inject(unmountRootComponentInjectable);
|
||||||
|
|
||||||
return async () => {
|
return async () => {
|
||||||
try {
|
|
||||||
// maximum time to let bundled extensions finish loading
|
|
||||||
const timeout = delay(10000);
|
|
||||||
|
|
||||||
const loadingExtensions = await autoInitExtensions();
|
|
||||||
|
|
||||||
const loadingBundledExtensions = loadingExtensions
|
|
||||||
.filter((e) => e.isBundled)
|
|
||||||
.map((e) => e.loaded);
|
|
||||||
|
|
||||||
const bundledExtensionsFinished = Promise.all(loadingBundledExtensions);
|
|
||||||
|
|
||||||
await Promise.race([bundledExtensionsFinished, timeout]);
|
|
||||||
} finally {
|
|
||||||
sendBundledExtensionsLoaded();
|
|
||||||
}
|
|
||||||
|
|
||||||
lensProtocolRouterRenderer.init();
|
lensProtocolRouterRenderer.init();
|
||||||
|
|
||||||
bindProtocolAddRouteHandlers();
|
bindProtocolAddRouteHandlers();
|
||||||
|
|||||||
@ -0,0 +1,40 @@
|
|||||||
|
/**
|
||||||
|
* 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 { delay } from "../../../common/utils";
|
||||||
|
import autoInitExtensionsInjectable from "../../../features/extensions/loader/common/auto-init-extensions.injectable";
|
||||||
|
import sendBundledExtensionsLoadedInjectable from "../../../features/extensions/loader/renderer/send-bundled-extensions-loaded.injectable";
|
||||||
|
import { beforeMainFrameStartsSecondInjectionToken } from "../../before-frame-starts/tokens";
|
||||||
|
|
||||||
|
const waitForBundledExtensionsInjectable = getInjectable({
|
||||||
|
id: "wait-for-bundled-extensions",
|
||||||
|
instantiate: (di) => ({
|
||||||
|
id: "wait-for-bundled-extensions",
|
||||||
|
run: async () => {
|
||||||
|
const autoInitExtensions = di.inject(autoInitExtensionsInjectable);
|
||||||
|
const sendBundledExtensionsLoaded = di.inject(sendBundledExtensionsLoadedInjectable);
|
||||||
|
|
||||||
|
try {
|
||||||
|
// maximum time to let bundled extensions finish loading
|
||||||
|
const timeout = delay(10000);
|
||||||
|
|
||||||
|
const loadingExtensions = await autoInitExtensions();
|
||||||
|
|
||||||
|
const loadingBundledExtensions = loadingExtensions
|
||||||
|
.filter((e) => e.isBundled)
|
||||||
|
.map((e) => e.loaded);
|
||||||
|
|
||||||
|
const bundledExtensionsFinished = Promise.all(loadingBundledExtensions);
|
||||||
|
|
||||||
|
await Promise.race([bundledExtensionsFinished, timeout]);
|
||||||
|
} finally {
|
||||||
|
sendBundledExtensionsLoaded();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
injectionToken: beforeMainFrameStartsSecondInjectionToken,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default waitForBundledExtensionsInjectable;
|
||||||
Loading…
Reference in New Issue
Block a user