1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Cleanup LensExtensions

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2022-12-02 09:02:05 -05:00
parent ba1ebbbd0c
commit 4db4ef46fd
4 changed files with 14 additions and 13 deletions

View File

@ -12,9 +12,11 @@ import type { CatalogEntityRegistry as RendererCatalogEntityRegistry } from "../
import type { GetExtensionPageParameters } from "../renderer/routes/get-extension-page-parameters.injectable"; import type { GetExtensionPageParameters } from "../renderer/routes/get-extension-page-parameters.injectable";
import type { FileSystemProvisionerStore } from "./extension-loader/file-system-provisioner-store/file-system-provisioner-store"; import type { FileSystemProvisionerStore } from "./extension-loader/file-system-provisioner-store/file-system-provisioner-store";
import type { NavigateForExtension } from "../main/start-main-application/lens-window/navigate-for-extension.injectable"; import type { NavigateForExtension } from "../main/start-main-application/lens-window/navigate-for-extension.injectable";
import type { Logger } from "../common/logger";
export interface LensExtensionDependencies { export interface LensExtensionDependencies {
readonly fileSystemProvisionerStore: FileSystemProvisionerStore; readonly fileSystemProvisionerStore: FileSystemProvisionerStore;
readonly logger: Logger;
} }
export interface LensMainExtensionDependencies extends LensExtensionDependencies { export interface LensMainExtensionDependencies extends LensExtensionDependencies {

View File

@ -5,7 +5,6 @@
import type { InstalledExtension } from "./extension-discovery/extension-discovery"; import type { InstalledExtension } from "./extension-discovery/extension-discovery";
import { action, computed, makeObservable, observable } from "mobx"; import { action, computed, makeObservable, observable } from "mobx";
import logger from "../main/logger";
import type { PackageJson } from "type-fest"; import type { PackageJson } from "type-fest";
import { disposer } from "../common/utils"; import { disposer } from "../common/utils";
import type { LensExtensionDependencies } from "./lens-extension-set-dependencies"; import type { LensExtensionDependencies } from "./lens-extension-set-dependencies";
@ -92,13 +91,8 @@ export class LensExtension<Dependencies extends LensExtensionDependencies = Lens
return; return;
} }
try { this._isEnabled = true;
this._isEnabled = true; this[lensExtensionDependencies].logger.info(`[EXTENSION]: enabled ${this.name}@${this.version}`);
logger.info(`[EXTENSION]: enabled ${this.name}@${this.version}`);
} catch (error) {
logger.error(`[EXTENSION]: failed to activate ${this.name}@${this.version}: ${error}`);
}
} }
@action @action
@ -112,9 +106,9 @@ export class LensExtension<Dependencies extends LensExtensionDependencies = Lens
try { try {
await this.onDeactivate(); await this.onDeactivate();
this[Disposers](); this[Disposers]();
logger.info(`[EXTENSION]: disabled ${this.name}@${this.version}`); this[lensExtensionDependencies].logger.info(`[EXTENSION]: disabled ${this.name}@${this.version}`);
} catch (error) { } catch (error) {
logger.error(`[EXTENSION]: disabling ${this.name}@${this.version} threw an error: ${error}`); this[lensExtensionDependencies].logger.error(`[EXTENSION]: disabling ${this.name}@${this.version} threw an error: ${error}`);
} }
} }

View File

@ -3,6 +3,8 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import type { Writable } from "type-fest";
import loggerInjectable from "../../common/logger.injectable";
import { createExtensionInstanceInjectionToken } from "../../extensions/extension-loader/create-extension-instance.token"; import { createExtensionInstanceInjectionToken } from "../../extensions/extension-loader/create-extension-instance.token";
import fileSystemProvisionerStoreInjectable from "../../extensions/extension-loader/file-system-provisioner-store/file-system-provisioner-store.injectable"; import fileSystemProvisionerStoreInjectable from "../../extensions/extension-loader/file-system-provisioner-store/file-system-provisioner-store.injectable";
import { lensExtensionDependencies } from "../../extensions/lens-extension"; import { lensExtensionDependencies } from "../../extensions/lens-extension";
@ -18,12 +20,13 @@ const createExtensionInstanceInjectable = getInjectable({
fileSystemProvisionerStore: di.inject(fileSystemProvisionerStoreInjectable), fileSystemProvisionerStore: di.inject(fileSystemProvisionerStoreInjectable),
entityRegistry: di.inject(catalogEntityRegistryInjectable), entityRegistry: di.inject(catalogEntityRegistryInjectable),
navigate: di.inject(navigateForExtensionInjectable), navigate: di.inject(navigateForExtensionInjectable),
logger: di.inject(loggerInjectable),
}; };
return (ExtensionClass, extension) => { return (ExtensionClass, extension) => {
const instance = new ExtensionClass(extension) as LensMainExtension; const instance = new ExtensionClass(extension) as LensMainExtension;
(instance as { [lensExtensionDependencies]: LensMainExtensionDependencies })[lensExtensionDependencies] = deps; (instance as Writable<LensMainExtension>)[lensExtensionDependencies] = deps;
return instance; return instance;
}; };

View File

@ -3,8 +3,9 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import type { Mutable } from "type-fest"; import type { Writable } from "type-fest";
import catalogCategoryRegistryInjectable from "../../common/catalog/category-registry.injectable"; import catalogCategoryRegistryInjectable from "../../common/catalog/category-registry.injectable";
import loggerInjectable from "../../common/logger.injectable";
import { createExtensionInstanceInjectionToken } from "../../extensions/extension-loader/create-extension-instance.token"; import { createExtensionInstanceInjectionToken } from "../../extensions/extension-loader/create-extension-instance.token";
import fileSystemProvisionerStoreInjectable from "../../extensions/extension-loader/file-system-provisioner-store/file-system-provisioner-store.injectable"; import fileSystemProvisionerStoreInjectable from "../../extensions/extension-loader/file-system-provisioner-store/file-system-provisioner-store.injectable";
import { lensExtensionDependencies } from "../../extensions/lens-extension"; import { lensExtensionDependencies } from "../../extensions/lens-extension";
@ -25,12 +26,13 @@ const createExtensionInstanceInjectable = getInjectable({
getExtensionPageParameters: di.inject(getExtensionPageParametersInjectable), getExtensionPageParameters: di.inject(getExtensionPageParametersInjectable),
navigateToRoute: di.inject(navigateToRouteInjectable), navigateToRoute: di.inject(navigateToRouteInjectable),
routes: di.inject(routesInjectable), routes: di.inject(routesInjectable),
logger: di.inject(loggerInjectable),
}; };
return (ExtensionClass, extension) => { return (ExtensionClass, extension) => {
const instance = new ExtensionClass(extension) as LensRendererExtension; const instance = new ExtensionClass(extension) as LensRendererExtension;
(instance as Mutable<LensRendererExtension, typeof lensExtensionDependencies>)[lensExtensionDependencies] = deps; (instance as Writable<LensRendererExtension>)[lensExtensionDependencies] = deps;
return instance; return instance;
}; };