Show splash window until bundled extensions have been loaded (#4570)

* Show splash window until bundled extensions have been loaded

Signed-off-by: Juho Heikka <juho.heikka@gmail.com>

* Remove unnecessary variable.

Signed-off-by: Juho Heikka <juho.heikka@gmail.com>

* Refactor autoInitExtensions

Signed-off-by: Juho Heikka <juho.heikka@gmail.com>

* Add timeout to waiting for bundled extensions to load

Signed-off-by: Juho Heikka <juho.heikka@gmail.com>
This commit is contained in:
Juho Heikka authored and GitHub committed 2021-12-23 11:00:18 +02:00
1 parent 43277d2af6
commit 9284741df5
5 files changed
+55 -7

No files matched your search

+16 -2
View File
@@ -29,7 +29,7 @@ import { ErrorBoundary } from "./components/error-boundary";
import { Notifications } from "./components/notifications";
import { ConfirmDialog } from "./components/confirm-dialog";
import type { ExtensionLoader } from "../extensions/extension-loader";
import { broadcastMessage } from "../common/ipc";
import { broadcastMessage, BundledExtensionsLoaded } from "../common/ipc";
import { CommandContainer } from "./components/command-palette/command-container";
import { registerIpcListeners } from "./ipc";
import { ipcRenderer } from "electron";
@@ -39,6 +39,7 @@ import logger from "../common/logger";
import { unmountComponentAtNode } from "react-dom";
import { ClusterFrameHandler } from "./components/cluster-manager/lens-views";
import type { LensProtocolRouterRenderer } from "./protocol-handler";
import { delay } from "./utils";
injectSystemCAs();
@@ -54,8 +55,21 @@ export class RootFrame extends React.Component {
lensProtocolRouterRendererInjectable: LensProtocolRouterRenderer,
) {
catalogEntityRegistry.init();
extensionLoader.loadOnClusterManagerRenderer();
try {
// maximum time to let bundled extensions finish loading
const timeout = delay(10000);
const loadingExtensions = extensionLoader.loadOnClusterManagerRenderer();
const loadingBundledExtensions = loadingExtensions.filter(e => e.isBundled).map(e => e.loaded);
const bundledExtensionsFinished = Promise.all(loadingBundledExtensions);
await Promise.race([bundledExtensionsFinished, timeout]);
} finally {
ipcRenderer.send(BundledExtensionsLoaded);
}
lensProtocolRouterRendererInjectable.init();
bindProtocolAddRouteHandlers();
window.addEventListener("offline", () => broadcastMessage("network:offline"));