mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Move extension updater to renderer
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
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);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user