diff --git a/src/common/ipc/extension-loader.ipc.ts b/src/common/ipc/extension-loader.ipc.ts index 1e4746dbf0..24c1de84d0 100644 --- a/src/common/ipc/extension-loader.ipc.ts +++ b/src/common/ipc/extension-loader.ipc.ts @@ -2,5 +2,4 @@ * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ -export const BundledExtensionsLoaded = "extension-loader:bundled-extensions-loaded"; export const BundledExtensionsUpdated = "extension-loader:bundled-extensions-updated"; diff --git a/src/extensions/extension-updater/bundled-extensions-updater.injectable.ts b/src/renderer/components/+extensions/extension-updater/bundled-extensions-updater.injectable.ts similarity index 66% rename from src/extensions/extension-updater/bundled-extensions-updater.injectable.ts rename to src/renderer/components/+extensions/extension-updater/bundled-extensions-updater.injectable.ts index 061af467e7..8522fcd3eb 100644 --- a/src/extensions/extension-updater/bundled-extensions-updater.injectable.ts +++ b/src/renderer/components/+extensions/extension-updater/bundled-extensions-updater.injectable.ts @@ -4,9 +4,9 @@ */ import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable"; -import ipcRendererInjectable from "../../renderer/app-paths/get-value-from-registered-channel/ipc-renderer/ipc-renderer.injectable"; -import installFromInputInjectable from "../../renderer/components/+extensions/install-from-input/install-from-input.injectable"; -import extensionLoaderInjectable from "../extension-loader/extension-loader.injectable"; +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 installFromInputInjectable from "../install-from-input/install-from-input.injectable"; import { BundledExtensionsUpdater } from "./bundled-extensions-updater"; const bundledExtensionsUpdaterInjectable = getInjectable({ diff --git a/src/extensions/extension-updater/bundled-extensions-updater.ts b/src/renderer/components/+extensions/extension-updater/bundled-extensions-updater.ts similarity index 71% rename from src/extensions/extension-updater/bundled-extensions-updater.ts rename to src/renderer/components/+extensions/extension-updater/bundled-extensions-updater.ts index fa10f6d6d5..b8b6aa1fca 100644 --- a/src/extensions/extension-updater/bundled-extensions-updater.ts +++ b/src/renderer/components/+extensions/extension-updater/bundled-extensions-updater.ts @@ -3,9 +3,9 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ -import { BundledExtensionsLoaded, BundledExtensionsUpdated, ipcRendererOn } from "../../common/ipc" -import { logger } from "../common-api"; -import type { InstalledExtension } from "../extension-discovery/extension-discovery"; +import { BundledExtensionsUpdated } from "../../../../common/ipc"; +import { logger } from "../../../../extensions/common-api"; +import type { InstalledExtension } from "../../../../extensions/extension-discovery/extension-discovery"; import { ExtensionUpdater, UpdaterDependencies } from "./extension-updater"; interface Dependencies extends UpdaterDependencies { @@ -18,13 +18,7 @@ export class BundledExtensionsUpdater extends ExtensionUpdater { super(dependencies); } - init() { - ipcRendererOn(BundledExtensionsLoaded, (event) => { - this.updateAll(); - }); - } - - private async updateAll() { + async updateAll() { logger.info("[EXTENSIONS-UPDATER]: Bundled extensions update started."); const updates = this.dependencies.extensions.map(this.update); diff --git a/src/extensions/extension-updater/extension-updater.ts b/src/renderer/components/+extensions/extension-updater/extension-updater.ts similarity index 80% rename from src/extensions/extension-updater/extension-updater.ts rename to src/renderer/components/+extensions/extension-updater/extension-updater.ts index b1589aed85..bf39ff012a 100644 --- a/src/extensions/extension-updater/extension-updater.ts +++ b/src/renderer/components/+extensions/extension-updater/extension-updater.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ -import type { InstalledExtension } from "../extension-discovery/extension-discovery" +import type { InstalledExtension } from "../../../../extensions/extension-discovery/extension-discovery" export interface UpdaterDependencies { installFromInput: (input: string) => Promise; @@ -14,7 +14,7 @@ export class ExtensionUpdater { } async update({ availableUpdate, manifest }: InstalledExtension): Promise { - return new Promise(resolve => { + return new Promise((resolve, reject) => { if (availableUpdate) { console.info(`[EXTENSIONS-UPDATER]: Trying to update ${manifest.name} extension`); @@ -22,6 +22,7 @@ export class ExtensionUpdater { // TODO: actual install // this.dependencies.installFromInput(availableUpdate.input); } + reject(); }); } 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 4bde2637d6..4db5c9619d 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,11 +5,10 @@ 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"; -import bundledExtensionsUpdaterInjectable from "../../../../extensions/extension-updater/bundled-extensions-updater.injectable"; +import bundledExtensionsUpdaterInjectable from "../../../components/+extensions/extension-updater/bundled-extensions-updater.injectable"; const initRootFrameInjectable = getInjectable({ instantiate: (di) => { @@ -18,8 +17,6 @@ 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 45fea5cf6e..872e7e0565 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,20 +3,17 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { delay } from "../../../../common/utils"; -import { broadcastMessage, BundledExtensionsLoaded } from "../../../../common/ipc"; +import { broadcastMessage } from "../../../../common/ipc"; import { registerIpcListeners } from "../../../ipc"; import logger from "../../../../common/logger"; import { unmountComponentAtNode } from "react-dom"; import type { ExtensionLoading } from "../../../../extensions/extension-loader"; import type { CatalogEntityRegistry } from "../../../api/catalog-entity-registry"; -import type { BundledExtensionsUpdater } from "../../../../extensions/extension-updater/bundled-extensions-updater"; +import type { BundledExtensionsUpdater } from "../../../components/+extensions/extension-updater/bundled-extensions-updater"; 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 }; @@ -32,13 +29,11 @@ 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 @@ -54,7 +49,7 @@ export const initRootFrame = await Promise.race([bundledExtensionsFinished, timeout]); } finally { - ipcRenderer.send(BundledExtensionsLoaded); + bundledExtensionsUpdater.updateAll(); } lensProtocolRouterRenderer.init();