/* eslint-disable */ // @ts-nocheck import { fetchWithError } from "@keycloak/keycloak-admin-client"; import type IdentityProviderRepresentation from "@keycloak/keycloak-admin-client/lib/defs/identityProviderRepresentation"; import { FormErrorText, HelpItem, TextControl, useEnvironment, } from "../../../shared/keycloak-ui-shared"; import { FormGroup, Title } from "../../../shared/@patternfly/react-core"; import { useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { useAdminClient } from "../../admin-client"; import { FileUploadForm } from "../../components/json-file-upload/FileUploadForm"; import { useRealm } from "../../context/realm-context/RealmContext"; import type { Environment } from "../../environment-types"; import { addTrailingSlash } from "../../util"; import { getAuthorizationHeaders } from "../../utils/getAuthorizationHeaders"; import { DiscoveryEndpointField } from "../component/DiscoveryEndpointField"; import { DescriptorSettings } from "./DescriptorSettings"; type FormFields = IdentityProviderRepresentation & { discoveryError: string; }; export const SamlConnectSettings = () => { const { adminClient } = useAdminClient(); const { environment } = useEnvironment(); const { t } = useTranslation(); const id = "saml"; const { realm } = useRealm(); const { setValue, setError, clearErrors, formState: { errors }, } = useFormContext(); const setupForm = (result: IdentityProviderRepresentation) => { Object.entries(result).map(([key, value]) => setValue(`config.${key}`, value, { shouldDirty: true }), ); }; const fileUpload = async (xml: string) => { clearErrors("discoveryError"); if (!xml) { return; } const formData = new FormData(); formData.append("providerId", id); formData.append("file", new Blob([xml])); try { const response = await fetchWithError( `${addTrailingSlash( adminClient.baseUrl, )}admin/realms/${realm}/identity-provider/import-config`, { method: "POST", body: formData, headers: getAuthorizationHeaders(await adminClient.getAccessToken()), }, ); if (response.ok) { const result = await response.json(); setupForm(result); } else { setError("discoveryError", { type: "manual", message: response.statusText, }); } } catch (error) { setError("discoveryError", { type: "manual", message: (error as Error).message, }); } }; return ( <> {t("samlSettings")} } > fileUpload(value)} /> {errors.discoveryError && ( )} } > {(readonly) => } ); };