diff --git a/src/main/catalog-sources/__test__/kubeconfig-sync.test.ts b/src/main/catalog-sources/__test__/kubeconfig-sync.test.ts index 9e0749b5f2..d151ba2d47 100644 --- a/src/main/catalog-sources/__test__/kubeconfig-sync.test.ts +++ b/src/main/catalog-sources/__test__/kubeconfig-sync.test.ts @@ -7,7 +7,7 @@ import { ObservableMap } from "mobx"; import type { CatalogEntity } from "../../../common/catalog"; import { loadFromOptions } from "../../../common/kube-helpers"; import type { Cluster } from "../../../common/cluster/cluster"; -import { computeDiff as computeDiffFor, configToModels } from "../kubeconfig-sync-manager/kubeconfig-sync-manager"; +import { computeDiff as computeDiffFor, configToModels } from "../kubeconfig-sync/manager"; import mockFs from "mock-fs"; import fs from "fs"; import { ClusterManager } from "../../cluster-manager"; diff --git a/src/main/catalog-sources/kubeconfig-sync-manager/kubeconfig-sync-manager.injectable.ts b/src/main/catalog-sources/kubeconfig-sync/manager.injectable.ts similarity index 79% rename from src/main/catalog-sources/kubeconfig-sync-manager/kubeconfig-sync-manager.injectable.ts rename to src/main/catalog-sources/kubeconfig-sync/manager.injectable.ts index 7c258cabd7..24ba63f538 100644 --- a/src/main/catalog-sources/kubeconfig-sync-manager/kubeconfig-sync-manager.injectable.ts +++ b/src/main/catalog-sources/kubeconfig-sync/manager.injectable.ts @@ -4,8 +4,9 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import directoryForKubeConfigsInjectable from "../../../common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable"; -import { KubeconfigSyncManager } from "./kubeconfig-sync-manager"; +import { KubeconfigSyncManager } from "./manager"; import { createClusterInjectionToken } from "../../../common/cluster/create-cluster-injection-token"; +import catalogEntityRegistryInjectable from "../../catalog/entity-registry.injectable"; const kubeconfigSyncManagerInjectable = getInjectable({ id: "kubeconfig-sync-manager", @@ -13,6 +14,7 @@ const kubeconfigSyncManagerInjectable = getInjectable({ instantiate: (di) => new KubeconfigSyncManager({ directoryForKubeConfigs: di.inject(directoryForKubeConfigsInjectable), createCluster: di.inject(createClusterInjectionToken), + entityRegistry: di.inject(catalogEntityRegistryInjectable), }), }); diff --git a/src/main/catalog-sources/kubeconfig-sync-manager/kubeconfig-sync-manager.ts b/src/main/catalog-sources/kubeconfig-sync/manager.ts similarity index 95% rename from src/main/catalog-sources/kubeconfig-sync-manager/kubeconfig-sync-manager.ts rename to src/main/catalog-sources/kubeconfig-sync/manager.ts index a94c4b0d93..748747fc92 100644 --- a/src/main/catalog-sources/kubeconfig-sync-manager/kubeconfig-sync-manager.ts +++ b/src/main/catalog-sources/kubeconfig-sync/manager.ts @@ -6,7 +6,6 @@ import type { IComputedValue, ObservableMap } from "mobx"; import { action, observable, computed, runInAction, makeObservable, observe } from "mobx"; import type { CatalogEntity } from "../../../common/catalog"; -import { catalogEntityRegistry } from "../../catalog"; import type { FSWatcher } from "chokidar"; import { watch } from "chokidar"; import type { Stats } from "fs"; @@ -27,6 +26,7 @@ import globToRegExp from "glob-to-regexp"; import { inspect } from "util"; import type { ClusterModel, UpdateClusterModel } from "../../../common/cluster-types"; import type { Cluster } from "../../../common/cluster/cluster"; +import type { CatalogEntityRegistry } from "../../catalog/entity-registry"; const logPrefix = "[KUBECONFIG-SYNC]:"; @@ -52,18 +52,19 @@ const folderSyncMaxAllowedFileReadSize = 2 * 1024 * 1024; // 2 MiB const fileSyncMaxAllowedFileReadSize = 16 * folderSyncMaxAllowedFileReadSize; // 32 MiB interface Dependencies { - directoryForKubeConfigs: string; + readonly directoryForKubeConfigs: string; + readonly entityRegistry: CatalogEntityRegistry; createCluster: (model: ClusterModel) => Cluster; } const kubeConfigSyncName = "lens:kube-sync"; export class KubeconfigSyncManager { - protected sources = observable.map, Disposer]>(); + protected readonly sources = observable.map, Disposer]>(); protected syncing = false; protected syncListDisposer?: Disposer; - constructor(private dependencies: Dependencies) { + constructor(protected readonly dependencies: Dependencies) { makeObservable(this); } @@ -77,7 +78,7 @@ export class KubeconfigSyncManager { logger.info(`${logPrefix} starting requested syncs`); - catalogEntityRegistry.addComputedSource(kubeConfigSyncName, computed(() => ( + this.dependencies.entityRegistry.addComputedSource(kubeConfigSyncName, computed(() => ( Array.from(iter.flatMap( this.sources.values(), ([entities]) => entities.get(), @@ -111,7 +112,7 @@ export class KubeconfigSyncManager { this.stopOldSync(filePath); } - catalogEntityRegistry.removeSource(kubeConfigSyncName); + this.dependencies.entityRegistry.removeSource(kubeConfigSyncName); this.syncing = false; } @@ -165,7 +166,7 @@ type RootSourceValue = [Cluster, CatalogEntity]; type RootSource = ObservableMap; // exported for testing -export const computeDiff = ({ directoryForKubeConfigs, createCluster }: Dependencies) => (contents: string, source: RootSource, filePath: string): void => { +export const computeDiff = ({ directoryForKubeConfigs, createCluster }: Pick) => (contents: string, source: RootSource, filePath: string): void => { runInAction(() => { try { const { config, error } = loadConfigFromString(contents); diff --git a/src/main/index.ts b/src/main/index.ts index b51232effb..082ec8d8f8 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -48,7 +48,7 @@ import extensionDiscoveryInjectable from "../extensions/extension-discovery/exte import directoryForExesInjectable from "../common/app-paths/directory-for-exes/directory-for-exes.injectable"; import initIpcMainHandlersInjectable from "./initializers/init-ipc-main-handlers/init-ipc-main-handlers.injectable"; import directoryForKubeConfigsInjectable from "../common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable"; -import kubeconfigSyncManagerInjectable from "./catalog-sources/kubeconfig-sync-manager/kubeconfig-sync-manager.injectable"; +import kubeconfigSyncManagerInjectable from "./catalog-sources/kubeconfig-sync/manager.injectable"; import clusterStoreInjectable from "../common/cluster-store/cluster-store.injectable"; import routerInjectable from "./router/router.injectable"; import shellApiRequestInjectable from "./proxy-functions/shell-api-request/shell-api-request.injectable";