/* eslint-disable */ // @ts-nocheck import IdentityProviderRepresentation from "@keycloak/keycloak-admin-client/lib/defs/identityProviderRepresentation"; import { FormSubmitButton, SelectControl, TextControl, } from "../../shared/keycloak-ui-shared"; import { Button, ButtonVariant, Form, Modal, ModalVariant, } from "../../shared/@patternfly/react-core"; import { useEffect } from "react"; import { FormProvider, useForm, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { useAdminClient } from "../admin-client"; import { DefaultSwitchControl } from "../components/SwitchControl"; import { useAlerts } from "../../shared/keycloak-ui-shared"; import { convertAttributeNameToForm, convertFormValuesToObject, convertToFormValues, } from "../util"; import { IdentityProviderSelect } from "./IdentityProviderSelect"; import { OrganizationFormType } from "./OrganizationForm"; type LinkIdentityProviderModalProps = { orgId: string; identityProvider?: IdentityProviderRepresentation; onClose: () => void; }; type LinkRepresentation = { alias: string[] | string; hideOnLogin: boolean; config: { "kc.org.domain": string; "kc.org.excluded.domains": string; }; }; export const LinkIdentityProviderModal = ({ orgId, identityProvider, onClose, }: LinkIdentityProviderModalProps) => { const { adminClient } = useAdminClient(); const { t } = useTranslation(); const { addAlert, addError } = useAlerts(); const form = useForm({ mode: "onChange" }); const { handleSubmit, formState, setValue } = form; const { getValues } = useFormContext(); useEffect( () => convertToFormValues( { ...identityProvider, alias: [identityProvider?.alias], hideOnLogin: identityProvider?.hideOnLogin, }, setValue, ), [], ); const submitForm = async (data: LinkRepresentation) => { try { const foundIdentityProvider = await adminClient.identityProviders.findOne( { alias: data.alias[0], }, ); if (!foundIdentityProvider) { throw new Error(t("notFound")); } const { config } = convertFormValuesToObject(data); foundIdentityProvider.config = { ...foundIdentityProvider.config, ...config, }; foundIdentityProvider.hideOnLogin = data.hideOnLogin; await adminClient.identityProviders.update( { alias: data.alias[0] }, foundIdentityProvider, ); if (!identityProvider) { await adminClient.organizations.linkIdp({ orgId, alias: data.alias[0], }); } addAlert( t(!identityProvider ? "linkSuccessful" : "linkUpdatedSuccessful"), ); onClose(); } catch (error) { addError(!identityProvider ? "linkError" : "linkUpdatedError", error); } }; return ( {t("save")} , , ]} >
({ key: d, value: d })) : []), ]} menuAppendTo="parent" />
); };