From 21df918f12a1a54b6b70a285f521c63ff0aef9c1 Mon Sep 17 00:00:00 2001 From: Juho Heikka Date: Wed, 5 Apr 2023 14:08:02 +0300 Subject: [PATCH] Refactor repeating code into a separate function. Signed-off-by: Juho Heikka --- .../deployment-details-metrics.injectable.tsx | 17 ++++------- ...MetricsKubeObjectDetailItem.injectable.tsx | 30 +++++++++++++++++++ .../node-details-metrics.injectable.tsx | 17 ++++------- ...istent-volume-claim-metrics.injectable.tsx | 17 ++++------- .../pod-details-pod-metrics.injectable.tsx | 17 ++++------- ...replica-set-details-metrics.injectable.tsx | 17 ++++------- 6 files changed, 60 insertions(+), 55 deletions(-) create mode 100644 packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/getMetricsKubeObjectDetailItem.injectable.tsx diff --git a/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/deployment-details-metrics.injectable.tsx b/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/deployment-details-metrics.injectable.tsx index 2e60eeb653..f8fdd9f4b6 100644 --- a/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/deployment-details-metrics.injectable.tsx +++ b/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/deployment-details-metrics.injectable.tsx @@ -4,24 +4,19 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import { ClusterMetricsResourceType } from "../../../../../common/cluster-types"; -import metricsDetailsComponentEnabledInjectable from "../../../../api/catalog/entity/metrics-details-component-enabled.injectable"; import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token"; import { deploymentDetailsMetricsInjectionToken } from "@k8slens/metrics"; -import { EmptyMetrics } from "./empty-metrics"; +import { getMetricsKubeObjectDetailItemInjectable } from "./getMetricsKubeObjectDetailItem.injectable"; const deploymentMetricsInjectable = getInjectable({ id: "deployment-details-metrics", instantiate: (di) => { - const deploymentMetrics = di.injectMany(deploymentDetailsMetricsInjectionToken); - const first = deploymentMetrics[0]; + const getMetricsKubeObjectDetailItem = di.inject(getMetricsKubeObjectDetailItemInjectable); - const Component = first?.Component ?? EmptyMetrics; - - return { - Component, - enabled: di.inject(metricsDetailsComponentEnabledInjectable, ClusterMetricsResourceType.Deployment), - orderNumber: -1, - }; + return getMetricsKubeObjectDetailItem( + deploymentDetailsMetricsInjectionToken, + ClusterMetricsResourceType.Deployment, + ); }, injectionToken: kubeObjectDetailItemInjectionToken, }); diff --git a/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/getMetricsKubeObjectDetailItem.injectable.tsx b/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/getMetricsKubeObjectDetailItem.injectable.tsx new file mode 100644 index 0000000000..bd31dee2b5 --- /dev/null +++ b/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/getMetricsKubeObjectDetailItem.injectable.tsx @@ -0,0 +1,30 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import type { KubeObjectDetailMetrics } from "@k8slens/metrics"; +import type { InjectionToken } from "@ogre-tools/injectable"; +import { getInjectable } from "@ogre-tools/injectable"; +import type { ClusterMetricsResourceType } from "../../../../../common/cluster-types"; +import metricsDetailsComponentEnabledInjectable from "../../../../api/catalog/entity/metrics-details-component-enabled.injectable"; +import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token"; +import { EmptyMetrics } from "./empty-metrics"; + +type GetMetricsKubeObjectDetailItem = (token: InjectionToken, metricResourceType: ClusterMetricsResourceType) => KubeObjectDetailItem; + +export const getMetricsKubeObjectDetailItemInjectable = getInjectable({ + id: "get-metrics-kube-object-detail-item", + instantiate: (di) : GetMetricsKubeObjectDetailItem => (token, metricResourceType) => { + const metrics = di.injectMany(token); + const first = metrics[0]; + + const Component = first?.Component ?? EmptyMetrics; + + return { + Component, + enabled: di.inject(metricsDetailsComponentEnabledInjectable, metricResourceType), + orderNumber: -1, + }; + }, +}); + diff --git a/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/node-details-metrics.injectable.tsx b/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/node-details-metrics.injectable.tsx index a9f236c6c2..77ac434d6e 100644 --- a/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/node-details-metrics.injectable.tsx +++ b/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/node-details-metrics.injectable.tsx @@ -5,23 +5,18 @@ import { nodeDetailsMetricsInjectionToken } from "@k8slens/metrics"; import { getInjectable } from "@ogre-tools/injectable"; import { ClusterMetricsResourceType } from "../../../../../common/cluster-types"; -import metricsDetailsComponentEnabledInjectable from "../../../../api/catalog/entity/metrics-details-component-enabled.injectable"; import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token"; -import { EmptyMetrics } from "./empty-metrics"; +import { getMetricsKubeObjectDetailItemInjectable } from "./getMetricsKubeObjectDetailItem.injectable"; const nodeMetricsInjectable = getInjectable({ id: "node-details-metrics", instantiate: (di) => { - const nodeMetrics = di.injectMany(nodeDetailsMetricsInjectionToken); - const first = nodeMetrics[0]; + const getMetricsKubeObjectDetailItem = di.inject(getMetricsKubeObjectDetailItemInjectable); - const Component = first?.Component ?? EmptyMetrics; - - return { - Component, - enabled: di.inject(metricsDetailsComponentEnabledInjectable, ClusterMetricsResourceType.Node), - orderNumber: -1, - }; + return getMetricsKubeObjectDetailItem( + nodeDetailsMetricsInjectionToken, + ClusterMetricsResourceType.Node, + ); }, injectionToken: kubeObjectDetailItemInjectionToken, }); diff --git a/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/persistent-volume-claim-metrics.injectable.tsx b/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/persistent-volume-claim-metrics.injectable.tsx index 02d9e7059d..2e958de3d1 100644 --- a/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/persistent-volume-claim-metrics.injectable.tsx +++ b/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/persistent-volume-claim-metrics.injectable.tsx @@ -5,23 +5,18 @@ import { persistentVolumeClaimDetailsMetricsInjectionToken } from "@k8slens/metrics"; import { getInjectable } from "@ogre-tools/injectable"; import { ClusterMetricsResourceType } from "../../../../../common/cluster-types"; -import metricsDetailsComponentEnabledInjectable from "../../../../api/catalog/entity/metrics-details-component-enabled.injectable"; import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token"; -import { EmptyMetrics } from "./empty-metrics"; +import { getMetricsKubeObjectDetailItemInjectable } from "./getMetricsKubeObjectDetailItem.injectable"; const persistentVolumeClaimMetricsInjectable = getInjectable({ id: "persistent-volume-claim-details-metrics", instantiate: (di) => { - const persistentVolumeClaimMetrics = di.injectMany(persistentVolumeClaimDetailsMetricsInjectionToken); - const first = persistentVolumeClaimMetrics[0]; + const getMetricsKubeObjectDetailItem = di.inject(getMetricsKubeObjectDetailItemInjectable); - const Component = first?.Component ?? EmptyMetrics; - - return { - Component, - enabled: di.inject(metricsDetailsComponentEnabledInjectable, ClusterMetricsResourceType.VolumeClaim), - orderNumber: -1, - }; + return getMetricsKubeObjectDetailItem( + persistentVolumeClaimDetailsMetricsInjectionToken, + ClusterMetricsResourceType.VolumeClaim, + ); }, injectionToken: kubeObjectDetailItemInjectionToken, }); diff --git a/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/pod-details-pod-metrics.injectable.tsx b/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/pod-details-pod-metrics.injectable.tsx index 7559549bcf..b19f3cd048 100644 --- a/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/pod-details-pod-metrics.injectable.tsx +++ b/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/pod-details-pod-metrics.injectable.tsx @@ -5,23 +5,18 @@ import { podDetailsMetricsInjectionToken } from "@k8slens/metrics"; import { getInjectable } from "@ogre-tools/injectable"; import { ClusterMetricsResourceType } from "../../../../../common/cluster-types"; -import metricsDetailsComponentEnabledInjectable from "../../../../api/catalog/entity/metrics-details-component-enabled.injectable"; import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token"; -import { EmptyMetrics } from "./empty-metrics"; +import { getMetricsKubeObjectDetailItemInjectable } from "./getMetricsKubeObjectDetailItem.injectable"; const podMetricsInjectable = getInjectable({ id: "pod-details-pod-metrics", instantiate: (di) => { - const podMetrics = di.injectMany(podDetailsMetricsInjectionToken); - const first = podMetrics[0]; + const getMetricsKubeObjectDetailItem = di.inject(getMetricsKubeObjectDetailItemInjectable); - const Component = first?.Component ?? EmptyMetrics; - - return { - Component, - enabled: di.inject(metricsDetailsComponentEnabledInjectable, ClusterMetricsResourceType.Pod), - orderNumber: -1, - }; + return getMetricsKubeObjectDetailItem( + podDetailsMetricsInjectionToken, + ClusterMetricsResourceType.Pod, + ); }, injectionToken: kubeObjectDetailItemInjectionToken, }); diff --git a/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/replica-set-details-metrics.injectable.tsx b/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/replica-set-details-metrics.injectable.tsx index 1ec67bacea..5d2751d897 100644 --- a/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/replica-set-details-metrics.injectable.tsx +++ b/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/metrics/replica-set-details-metrics.injectable.tsx @@ -5,23 +5,18 @@ import { replicaSetDetailsMetricsInjectionToken } from "@k8slens/metrics"; import { getInjectable } from "@ogre-tools/injectable"; import { ClusterMetricsResourceType } from "../../../../../common/cluster-types"; -import metricsDetailsComponentEnabledInjectable from "../../../../api/catalog/entity/metrics-details-component-enabled.injectable"; import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token"; -import { EmptyMetrics } from "./empty-metrics"; +import { getMetricsKubeObjectDetailItemInjectable } from "./getMetricsKubeObjectDetailItem.injectable"; const replicaSetMetricsInjectable = getInjectable({ id: "replica-set-details-metrics", instantiate: (di) => { - const replicaSetMetrics = di.injectMany(replicaSetDetailsMetricsInjectionToken); - const first = replicaSetMetrics[0]; + const getMetricsKubeObjectDetailItem = di.inject(getMetricsKubeObjectDetailItemInjectable); - const Component = first?.Component ?? EmptyMetrics; - - return { - Component, - enabled: di.inject(metricsDetailsComponentEnabledInjectable, ClusterMetricsResourceType.ReplicaSet), - orderNumber: -1, - }; + return getMetricsKubeObjectDetailItem( + replicaSetDetailsMetricsInjectionToken, + ClusterMetricsResourceType.ReplicaSet, + ); }, injectionToken: kubeObjectDetailItemInjectionToken, });