/* eslint-disable */ // @ts-nocheck import RequiredActionConfigInfoRepresentation from "@keycloak/keycloak-admin-client/lib/defs/requiredActionConfigInfoRepresentation"; import RequiredActionConfigRepresentation from "@keycloak/keycloak-admin-client/lib/defs/requiredActionConfigRepresentation"; import type RequiredActionProviderRepresentation from "@keycloak/keycloak-admin-client/lib/defs/requiredActionProviderRepresentation"; import { isUserProfileError, setUserProfileServerError, useAlerts, useFetch, } from "../../../shared/keycloak-ui-shared"; import { ActionGroup, AlertVariant, Button, ButtonVariant, Form, Modal, ModalVariant, } from "../../../shared/@patternfly/react-core"; import { TrashIcon } from "../../../shared/@patternfly/react-icons"; import { 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"; type RequiredActionConfigModalForm = { // alias: string; config: { [index: string]: string }; }; type RequiredActionConfigModalProps = { requiredAction: RequiredActionProviderRepresentation; onClose: () => void; }; export const RequiredActionConfigModal = ({ requiredAction, onClose, }: RequiredActionConfigModalProps) => { const { adminClient } = useAdminClient(); const { t } = useTranslation(); const { addAlert, addError } = useAlerts(); const [configDescription, setConfigDescription] = useState(); const form = useForm(); const { setValue, handleSubmit } = form; // // default config all required actions should have // const defaultConfigProperties = []; const setupForm = (config?: RequiredActionConfigRepresentation) => { convertToFormValues(config || {}, setValue); }; useFetch( async () => { const configDescription = await adminClient.authenticationManagement.getRequiredActionConfigDescription( { alias: requiredAction.alias!, }, ); const config = await adminClient.authenticationManagement.getRequiredActionConfig({ alias: requiredAction.alias!, }); // merge default and fetched config properties configDescription.properties = [ //...defaultConfigProperties!, ...configDescription.properties!, ]; return { configDescription, config }; }, ({ configDescription, config }) => { setConfigDescription(configDescription); setupForm(config); }, [], ); const save = async (saved: RequiredActionConfigModalForm) => { const newConfig = convertFormValuesToObject(saved); try { await adminClient.authenticationManagement.updateRequiredActionConfig( { alias: requiredAction.alias! }, newConfig, ); setupForm(newConfig); addAlert(t("configSaveSuccess"), AlertVariant.success); onClose(); } catch (error) { if (isUserProfileError(error)) { setUserProfileServerError( error, (name: string | number, error: unknown) => { // TODO: Does not set set the error message to the field, yet. // Still, this will do all front end replacement and translation of keys. addError("configSaveError", (error as any).message); }, t, ); } else { addError("configSaveError", error); } } }; return (
); };