replacing toJS({}) to utils/cloneJson where might be necessary

Signed-off-by: Roman <ixrock@gmail.com>
This commit is contained in:
Roman committed 2021-04-23 16:18:35 +03:00
1 parent f620c09095
commit 4fbefb648a
19 files changed
+110 -110

No files matched your search

+15 -9
View File
@@ -1,13 +1,13 @@
import "../common/cluster-ipc";
import type http from "http";
import { ipcMain } from "electron";
import { action, autorun, observable, reaction, toJS, makeObservable } from "mobx";
import { action, autorun, makeObservable, observable, reaction, toJS } from "mobx";
import { ClusterStore, getClusterIdFromHost } from "../common/cluster-store";
import { Cluster } from "./cluster";
import logger from "./logger";
import { apiKubePrefix } from "../common/vars";
import { Singleton } from "../common/utils";
import { CatalogEntity } from "../common/catalog-entity";
import { cloneJson, Singleton } from "../common/utils";
import { CatalogEntity, CatalogEntityData } from "../common/catalog-entity";
import { KubernetesCluster } from "../common/catalog-entities/kubernetes-cluster";
import { catalogEntityRegistry } from "../common/catalog-entity-registry";
@@ -41,7 +41,6 @@ export class ClusterManager extends Singleton {
this.syncClustersFromCatalog(entities);
});
// auto-stop removed clusters
autorun(() => {
const removedClusters = Array.from(ClusterStore.getInstance().removedClusters.values());
@@ -57,11 +56,16 @@ export class ClusterManager extends Singleton {
delay: 250
});
ipcMain.on("network:offline", () => { this.onNetworkOffline(); });
ipcMain.on("network:online", () => { this.onNetworkOnline(); });
ipcMain.on("network:offline", () => {
this.onNetworkOffline();
});
ipcMain.on("network:online", () => {
this.onNetworkOnline();
});
}
@action protected updateCatalogSource(clusters: Cluster[]) {
@action
protected updateCatalogSource(clusters: Cluster[]) {
this.catalogSource.forEach((entity, index) => {
const clusterIndex = clusters.findIndex((cluster) => entity.metadata.uid === cluster.id);
@@ -121,7 +125,7 @@ export class ClusterManager extends Singleton {
}
protected catalogEntityFromCluster(cluster: Cluster) {
return new KubernetesCluster(toJS({
const data: CatalogEntityData = cloneJson({
apiVersion: "entity.k8slens.dev/v1alpha1",
kind: "KubernetesCluster",
metadata: {
@@ -142,7 +146,9 @@ export class ClusterManager extends Singleton {
message: "",
active: !cluster.disconnected
}
}));
});
return new KubernetesCluster(data);
}
protected onNetworkOffline() {
+8 -11
View File
@@ -1,7 +1,7 @@
import { ipcMain } from "electron";
import type { ClusterId, ClusterMetadata, ClusterModel, ClusterPreferences, ClusterPrometheusPreferences } from "../common/cluster-store";
import type { IMetricsReqParams } from "../renderer/api/endpoints/metrics.api";
import { action, comparer, computed, makeObservable, observable, reaction, toJS, when } from "mobx";
import { action, comparer, computed, makeObservable, observable, reaction, when } from "mobx";
import { apiKubePrefix } from "../common/vars";
import { broadcastMessage, ClusterListNamespaceForbiddenChannel, InvalidKubeconfigChannel } from "../common/ipc";
import { ContextHandler } from "./context-handler";
@@ -15,6 +15,7 @@ import logger from "./logger";
import { VersionDetector } from "./cluster-detectors/version-detector";
import { detectorRegistry } from "./cluster-detectors/detector-registry";
import plimit from "p-limit";
import { cloneJson } from "../common/utils";
export enum ClusterStatus {
AccessGranted = 2,
@@ -240,7 +241,7 @@ export class Cluster implements ClusterModel, ClusterState {
@computed get prometheusPreferences(): ClusterPrometheusPreferences {
const { prometheus, prometheusProvider } = this.preferences;
return toJS({ prometheus, prometheusProvider });
return cloneJson({ prometheus, prometheusProvider });
}
/**
@@ -604,7 +605,7 @@ export class Cluster implements ClusterModel, ClusterState {
}
toJSON(): ClusterModel {
const model: ClusterModel = {
return cloneJson({
id: this.id,
contextName: this.contextName,
kubeConfigPath: this.kubeConfigPath,
@@ -613,16 +614,14 @@ export class Cluster implements ClusterModel, ClusterState {
metadata: this.metadata,
ownerRef: this.ownerRef,
accessibleNamespaces: this.accessibleNamespaces,
};
return toJS(model);
});
}
/**
* Serializable cluster-state used for sync btw main <-> renderer
*/
getState(): ClusterState {
const state: ClusterState = {
return cloneJson({
initialized: this.initialized,
enabled: this.enabled,
apiUrl: this.apiUrl,
@@ -635,9 +634,7 @@ export class Cluster implements ClusterModel, ClusterState {
allowedNamespaces: this.allowedNamespaces,
allowedResources: this.allowedResources,
isGlobalWatchEnabled: this.isGlobalWatchEnabled,
};
return toJS(state);
});
}
/**
@@ -680,7 +677,7 @@ export class Cluster implements ClusterModel, ClusterState {
const api = (await this.getProxyKubeconfig()).makeApiClient(CoreV1Api);
try {
const { body: { items }} = await api.listNamespace();
const { body: { items } } = await api.listNamespace();
const namespaces = items.map(ns => ns.metadata.name);
this.getAllowedNamespacesErrorCount = 0; // reset on success
+5 -4
View File
@@ -2,17 +2,18 @@ import { randomBytes } from "crypto";
import { SHA256 } from "crypto-js";
import { app, remote } from "electron";
import fse from "fs-extra";
import { action, observable, toJS, makeObservable } from "mobx";
import { action, makeObservable, observable } from "mobx";
import path from "path";
import { BaseStore } from "../common/base-store";
import { LensExtensionId } from "../extensions/lens-extension";
import { cloneJson } from "../common/utils";
interface FSProvisionModel {
extensions: Record<string, string>; // extension names to paths
}
export class FilesystemProvisionerStore extends BaseStore<FSProvisionModel> {
@observable registeredExtensions = observable.map<LensExtensionId, string>();
registeredExtensions = observable.map<LensExtensionId, string>();
constructor() {
super({
@@ -50,8 +51,8 @@ export class FilesystemProvisionerStore extends BaseStore<FSProvisionModel> {
}
toJSON(): FSProvisionModel {
return toJS({
extensions: Object.fromEntries(this.registeredExtensions.toJSON()),
return cloneJson({
extensions: Object.fromEntries(this.registeredExtensions),
});
}
}
+2 -2
View File
@@ -7,7 +7,7 @@ import path from "path";
import * as tempy from "tempy";
import logger from "./logger";
import { appEventBus } from "../common/event-bus";
import { cloneJsonObject } from "../common/utils";
import { cloneJson } from "../common/utils";
export class ResourceApplier {
constructor(protected cluster: Cluster) {
@@ -83,7 +83,7 @@ export class ResourceApplier {
}
protected sanitizeObject(resource: KubernetesObject | any) {
resource = cloneJsonObject(resource);
resource = cloneJson(resource);
delete resource.status;
delete resource.metadata?.resourceVersion;
const annotations = resource.metadata?.annotations;