1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00
lens/src/renderer/components/+entity-settings/internal-kubernetes-cluster/general-settings.injectable.tsx
Sebastian Malton e4e0c30da2 Make EntitySettingRegistry fully injectable
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2022-11-28 12:11:43 -05:00

72 lines
2.4 KiB
TypeScript

/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import { withInjectables } from "@ogre-tools/injectable-react";
import React from "react";
import type { KubernetesCluster } from "../../../../common/catalog-entities";
import type { GetClusterById } from "../../../../common/cluster-store/get-by-id.injectable";
import getClusterByIdInjectable from "../../../../common/cluster-store/get-by-id.injectable";
import { ClusterIconSetting } from "../../cluster-settings/icon-settings";
import { ClusterKubeconfig } from "../../cluster-settings/kubeconfig";
import { ClusterNameSetting } from "../../cluster-settings/name-setting";
import type { EntitySettingViewProps } from "../extension-registrator.injectable";
import { entitySettingInjectionToken } from "../token";
interface Dependencies {
getClusterById: GetClusterById;
}
function NonInjectedGeneralKubernetesClusterSettings({ entity, getClusterById }: EntitySettingViewProps & Dependencies) {
const cluster = getClusterById(entity.getId());
if (!cluster) {
return null;
}
return (
<section>
<section>
<div className="flex">
<div className="flex-grow pr-8">
<ClusterNameSetting cluster={cluster} entity={entity as KubernetesCluster} />
</div>
<div>
<ClusterIconSetting cluster={cluster} entity={entity as KubernetesCluster} />
</div>
</div>
</section>
<section className="small">
<ClusterKubeconfig cluster={cluster} />
</section>
</section>
);
}
const GeneralKubernetesClusterSettings = withInjectables<Dependencies, EntitySettingViewProps>(NonInjectedGeneralKubernetesClusterSettings, {
getProps: (di, props) => ({
...props,
getClusterById: di.inject(getClusterByIdInjectable),
}),
});
const generalKubernetesClusterEntitySettingsInjectable = getInjectable({
id: "general-kubernetes-cluster-entity-settings",
instantiate: () => ({
apiVersions: ["entity.k8slens.dev/v1alpha1"],
kind: "KubernetesCluster",
source: "local",
title: "General",
group: "Settings",
id: "general",
priority: 40,
components: {
View: GeneralKubernetesClusterSettings,
},
}),
injectionToken: entitySettingInjectionToken,
});
export default generalKubernetesClusterEntitySettingsInjectable;