mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Stop using global shared state for ExtensionDiscovery and it's relatives
Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com> Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
This commit is contained in:
1 parent
41aacb3db2
commit
a9189f82e6
55 files changed
+1251
-587
No files matched your search
@@ -21,9 +21,13 @@
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import { lifecycleEnum } from "@ogre-tools/injectable";
|
||||
import { ExtensionLoader } from "./extension-loader";
|
||||
import extensionsStoreInjectable from "../extensions-store/extensions-store.injectable";
|
||||
|
||||
const extensionLoaderInjectable = getInjectable({
|
||||
instantiate: () => new ExtensionLoader(),
|
||||
instantiate: (di) => new ExtensionLoader({
|
||||
extensionsStore: di.inject(extensionsStoreInjectable),
|
||||
}),
|
||||
|
||||
lifecycle: lifecycleEnum.singleton,
|
||||
});
|
||||
|
||||
|
||||
@@ -29,8 +29,8 @@ import { broadcastMessage, ipcMainOn, ipcRendererOn, requestMain, ipcMainHandle
|
||||
import { Disposer, toJS } from "../../common/utils";
|
||||
import logger from "../../main/logger";
|
||||
import type { KubernetesCluster } from "../common-api/catalog";
|
||||
import type { InstalledExtension } from "../extension-discovery";
|
||||
import { ExtensionsStore } from "../extensions-store";
|
||||
import type { InstalledExtension } from "../extension-discovery/extension-discovery";
|
||||
import type { ExtensionsStore } from "../extensions-store/extensions-store";
|
||||
import type { LensExtension, LensExtensionConstructor, LensExtensionId } from "../lens-extension";
|
||||
import type { LensRendererExtension } from "../lens-renderer-extension";
|
||||
import * as registries from "../registries";
|
||||
@@ -41,6 +41,10 @@ export function extensionPackagesRoot() {
|
||||
|
||||
const logModule = "[EXTENSIONS-LOADER]";
|
||||
|
||||
interface Dependencies {
|
||||
extensionsStore: ExtensionsStore
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads installed extensions to the Lens application
|
||||
*/
|
||||
@@ -75,7 +79,7 @@ export class ExtensionLoader {
|
||||
return when(() => this.isLoaded);
|
||||
}
|
||||
|
||||
constructor() {
|
||||
constructor(protected dependencies : Dependencies) {
|
||||
makeObservable(this);
|
||||
observe(this.instances, change => {
|
||||
switch (change.type) {
|
||||
@@ -156,7 +160,7 @@ export class ExtensionLoader {
|
||||
|
||||
// save state on change `extension.isEnabled`
|
||||
reaction(() => this.storeState, extensionsState => {
|
||||
ExtensionsStore.getInstance().mergeState(extensionsState);
|
||||
this.dependencies.extensionsStore.mergeState(extensionsState);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user