/* 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 (
);
};
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}
>
)}
);
};