diff --git a/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/implementations/mutating-webhook-configurations-details-item.injectable.ts b/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/implementations/mutating-webhook-configurations-details-item.injectable.ts new file mode 100644 index 0000000000..94b5fdac42 --- /dev/null +++ b/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/implementations/mutating-webhook-configurations-details-item.injectable.ts @@ -0,0 +1,33 @@ +/** + * 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 { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token"; +import { computed } from "mobx"; +import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; +import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; +import { MutatingWebhookDetails } from "../../../+config-mutating-webhook-configurations"; + +const mutatingWebhookConfigurationDetailItemInjectable = getInjectable({ + id: "mutating-webhook-configuration-detail-item", + + instantiate(di) { + const kubeObject = di.inject(currentKubeObjectInDetailsInjectable); + + return { + Component: MutatingWebhookDetails, + enabled: computed(() => isMutatingWebhookConfiguration(kubeObject.value.get()?.object)), + orderNumber: 10, + }; + }, + + injectionToken: kubeObjectDetailItemInjectionToken, +}); + +export const isMutatingWebhookConfiguration = kubeObjectMatchesToKindAndApiVersion( + "MutatingWebhookConfiguration", + ["v1", "admissionregistration.k8s.io/v1beta1", "admissionregistration.k8s.io/v1"], +); + +export default mutatingWebhookConfigurationDetailItemInjectable;