/* eslint-disable */ // @ts-nocheck import type AuthenticatorConfigInfoRepresentation from "@keycloak/keycloak-admin-client/lib/defs/authenticatorConfigInfoRepresentation"; import type AuthenticatorConfigRepresentation from "@keycloak/keycloak-admin-client/lib/defs/authenticatorConfigRepresentation"; import { TextControl, useAlerts, useFetch } from "../../../shared/keycloak-ui-shared"; import { ActionGroup, AlertVariant, Button, ButtonVariant, Form, Modal, ModalVariant, Tooltip, } from "../../../shared/@patternfly/react-core"; import { CogIcon, TrashIcon } from "../../../shared/@patternfly/react-icons"; import { useEffect, useState } from "react"; import { FormProvider, useForm } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { useAdminClient } from "../../admin-client"; import { DynamicComponents } from "../../components/dynamic/DynamicComponents"; import { convertFormValuesToObject, convertToFormValues } from "../../util"; import type { ExpandableExecution } from "../execution-model"; type ExecutionConfigModalForm = { alias: string; config: { [index: string]: string }; }; type ExecutionConfigModalProps = { execution: ExpandableExecution; }; export const ExecutionConfigModal = ({ execution, }: ExecutionConfigModalProps) => { const { adminClient } = useAdminClient(); const { t } = useTranslation(); const { addAlert, addError } = useAlerts(); const [show, setShow] = useState(false); const [config, setConfig] = useState(); const [configDescription, setConfigDescription] = useState(); const form = useForm(); const { setValue, handleSubmit } = form; // default config all executions should have const defaultConfigProperties = execution.authenticationFlow ? [] : [ { helpText: t("authenticatorRefConfig.value.help"), label: t("authenticatorRefConfig.value.label"), name: "default.reference.value", readOnly: false, secret: false, type: "String", }, { helpText: t("authenticatorRefConfig.maxAge.help"), label: t("authenticatorRefConfig.maxAge.label"), name: "default.reference.maxAge", readOnly: false, secret: false, type: "String", }, ]; const setupForm = (config?: AuthenticatorConfigRepresentation) => { convertToFormValues(config || {}, setValue); }; useFetch( async () => { let config: AuthenticatorConfigRepresentation | undefined; const configDescription = execution.configurable ? await adminClient.authenticationManagement.getConfigDescription({ providerId: execution.providerId!, }) : { name: execution.displayName, properties: [], }; if (execution.authenticationConfig) { config = await adminClient.authenticationManagement.getConfig({ id: execution.authenticationConfig, }); } // merge default and fetched config properties configDescription.properties = [ ...defaultConfigProperties!, ...configDescription.properties!, ]; return { configDescription, config }; }, ({ configDescription, config }) => { setConfigDescription(configDescription); setConfig(config); }, [], ); useEffect(() => { if (config) setupForm(config); }, [config]); const save = async (saved: ExecutionConfigModalForm) => { const changedConfig = convertFormValuesToObject(saved); try { if (config) { const newConfig = { id: config.id, alias: config.alias, config: changedConfig.config, }; await adminClient.authenticationManagement.updateConfig(newConfig); setConfig({ ...newConfig }); } else { const newConfig = { id: execution.id!, alias: changedConfig.alias, config: changedConfig.config, }; const { id } = await adminClient.authenticationManagement.createConfig(newConfig); setConfig({ ...newConfig.config, id, alias: newConfig.alias }); } addAlert(t("configSaveSuccess"), AlertVariant.success); setShow(false); } catch (error) { addError("configSaveError", error); } }; return ( <> {configDescription && ( setShow(false)} >
{config && ( )}
)} ); };