Move extension updater to renderer

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
Alex Andreev committed 2022-01-25 10:40:09 +03:00
1 parent 3ba60a47b0
commit b33b5f89c3
6 files changed
+14 -28

No files matched your search

@@ -1,23 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
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 { BundledExtensionsUpdater } from "./bundled-extensions-updater";
const bundledExtensionsUpdaterInjectable = getInjectable({
instantiate: (di) =>
new BundledExtensionsUpdater({
installFromInput: di.inject(installFromInputInjectable),
extensions: di.inject(extensionLoaderInjectable).bundledExtensions,
ipcRenderer: di.inject(ipcRendererInjectable),
}),
lifecycle: lifecycleEnum.singleton,
});
export default bundledExtensionsUpdaterInjectable;
@@ -1,39 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* 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 { ExtensionUpdater, UpdaterDependencies } from "./extension-updater";
interface Dependencies extends UpdaterDependencies {
extensions: InstalledExtension[];
ipcRenderer: { send: (name: string) => void };
}
export class BundledExtensionsUpdater extends ExtensionUpdater {
constructor(protected dependencies: Dependencies) {
super(dependencies);
}
init() {
ipcRendererOn(BundledExtensionsLoaded, (event) => {
this.updateAll();
});
}
private async updateAll() {
logger.info("[EXTENSIONS-UPDATER]: Bundled extensions update started.");
const updates = this.dependencies.extensions.map(this.update);
try {
await Promise.allSettled(updates);
} finally {
this.dependencies.ipcRenderer.send(BundledExtensionsUpdated);
}
logger.info("[EXTENSIONS-UPDATER]: Bundled extensions update finished.");
}
}
@@ -1,28 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { InstalledExtension } from "../extension-discovery/extension-discovery"
export interface UpdaterDependencies {
installFromInput: (input: string) => Promise<void>;
}
export class ExtensionUpdater {
constructor(protected dependencies : UpdaterDependencies) {
}
async update({ availableUpdate, manifest }: InstalledExtension): Promise<void> {
return new Promise(resolve => {
if (availableUpdate) {
console.info(`[EXTENSIONS-UPDATER]: Trying to update ${manifest.name} extension`);
resolve();
// TODO: actual install
// this.dependencies.installFromInput(availableUpdate.input);
}
});
}
}