/* eslint-disable */ // @ts-nocheck import type { AuthenticationProviderRepresentation } from "@keycloak/keycloak-admin-client/lib/defs/authenticatorConfigRepresentation"; import { PaginatingTableToolbar, useFetch } from "../../../../shared/keycloak-ui-shared"; import { Button, ButtonVariant, Form, Modal, ModalVariant, PageSection, Radio, } from "../../../../shared/@patternfly/react-core"; import { useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import { useAdminClient } from "../../../admin-client"; import useLocaleSort, { mapByKey } from "../../../utils/useLocaleSort"; import { providerConditionFilter } from "../../FlowDetails"; type AuthenticationProviderListProps = { list?: AuthenticationProviderRepresentation[]; setValue: (provider?: AuthenticationProviderRepresentation) => void; }; const AuthenticationProviderList = ({ list, setValue, }: AuthenticationProviderListProps) => { return (
{list?.map((provider) => ( { setValue(provider); }} /> ))}
); }; export type FlowType = "client" | "form" | "basic" | "condition" | "subFlow"; type AddStepModalProps = { name: string; type: FlowType; onSelect: (value?: AuthenticationProviderRepresentation) => void; }; export const AddStepModal = ({ name, type, onSelect }: AddStepModalProps) => { const { adminClient } = useAdminClient(); const { t } = useTranslation(); const [value, setValue] = useState(); const [providers, setProviders] = useState(); const [max, setMax] = useState(10); const [first, setFirst] = useState(0); const [search, setSearch] = useState(""); const localeSort = useLocaleSort(); useFetch( async () => { switch (type) { case "client": return adminClient.authenticationManagement.getClientAuthenticatorProviders(); case "form": return adminClient.authenticationManagement.getFormActionProviders(); case "condition": { const providers = await adminClient.authenticationManagement.getAuthenticatorProviders(); return providers.filter(providerConditionFilter); } case "basic": default: { const providers = await adminClient.authenticationManagement.getAuthenticatorProviders(); return providers.filter((p) => !providerConditionFilter(p)); } } }, (providers) => setProviders(providers), [], ); const page = useMemo(() => { const normalizedSearch = search.trim().toLowerCase(); return localeSort(providers ?? [], mapByKey("displayName")) .filter( ({ displayName, description }) => displayName?.toLowerCase().includes(normalizedSearch) || description?.toLowerCase().includes(normalizedSearch), ) .slice(first, first + max + 1); }, [providers, search, first, max]); return ( onSelect()} actions={[ , , ]} > {providers && ( { setFirst(first); setMax(max); }} inputGroupName="search" inputGroupPlaceholder={t("search")} inputGroupOnEnter={setSearch} > )} ); };