/* eslint-disable */ // @ts-nocheck import type ComponentRepresentation from "@keycloak/keycloak-admin-client/lib/defs/componentRepresentation"; import { KeycloakSpinner, TextControl, useAlerts, useFetch, } from "../../../shared/keycloak-ui-shared"; import { ActionGroup, AlertVariant, Button, PageSection, } from "../../../shared/@patternfly/react-core"; import { FormProvider, useForm } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { Link, useNavigate } from "react-router-dom"; import { useAdminClient } from "../../admin-client"; import { DynamicComponents } from "../../components/dynamic/DynamicComponents"; import { FormAccess } from "../../components/form/FormAccess"; import { useRealm } from "../../context/realm-context/RealmContext"; import { useServerInfo } from "../../context/server-info/ServerInfoProvider"; import { convertFormValuesToObject, convertToFormValues } from "../../util"; import { useParams } from "../../utils/useParams"; import type { CustomUserFederationRouteParams } from "../routes/CustomUserFederation"; import { toUserFederation } from "../routes/UserFederation"; import { ExtendedHeader } from "../shared/ExtendedHeader"; import { SettingsCache } from "../shared/SettingsCache"; import { SyncSettings } from "./SyncSettings"; import "./custom-provider-settings.css"; import { useState } from "react"; export default function CustomProviderSettings() { const { adminClient } = useAdminClient(); const { t } = useTranslation(); const { id, providerId } = useParams(); const navigate = useNavigate(); const form = useForm({ mode: "onChange", }); const { reset, setValue, handleSubmit, formState: { isDirty }, } = form; const { addAlert, addError } = useAlerts(); const { realm: realmName, realmRepresentation: realm } = useRealm(); const [loading, setLoading] = useState(true); const provider = ( useServerInfo().componentTypes?.[ "org.keycloak.storage.UserStorageProvider" ] || [] ).find((p) => p.id === providerId); useFetch( async () => { if (id) { return await adminClient.components.findOne({ id }); } return undefined; }, (fetchedComponent) => { if (fetchedComponent) { convertToFormValues(fetchedComponent, setValue); } else if (id) { throw new Error(t("notFound")); } setLoading(false); }, [], ); const save = async (component: ComponentRepresentation) => { const saveComponent = convertFormValuesToObject({ ...component, config: Object.fromEntries( Object.entries(component.config || {}).map(([key, value]) => [ key, Array.isArray(value) ? value : [value], ]), ), providerId, providerType: "org.keycloak.storage.UserStorageProvider", parentId: realm.id, }); try { if (!id) { await adminClient.components.create(saveComponent); navigate(toUserFederation({ realm: realmName })); } else { await adminClient.components.update({ id }, saveComponent); } reset({ ...component }); addAlert( t(!id ? "createUserProviderSuccess" : "userProviderSaveSuccess"), AlertVariant.success, ); } catch (error) { addError( !id ? "createUserProviderError" : "userProviderSaveError", error, ); } }; if (loading) return ; return ( handleSubmit(save)()} /> {provider?.metadata.synchronizable && } ); }