/* eslint-disable */ // @ts-nocheck import type ComponentRepresentation from "@keycloak/keycloak-admin-client/lib/defs/componentRepresentation"; import { Action, KeycloakDataTable, ListEmptyState, useAlerts, useFetch, } from "../../../../shared/keycloak-ui-shared"; import { AlertVariant, Button, ButtonVariant, ToolbarItem, } from "../../../../shared/@patternfly/react-core"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import { Link, To, useNavigate, useParams } from "react-router-dom"; import { useAdminClient } from "../../../admin-client"; import { useConfirmDialog } from "../../../components/confirm-dialog/ConfirmDialog"; import useLocaleSort, { mapByKey } from "../../../utils/useLocaleSort"; export type LdapMapperListProps = { toCreate: To; toDetail: (mapperId: string) => To; }; type MapperLinkProps = ComponentRepresentation & { toDetail: (mapperId: string) => To; }; const MapperLink = ({ toDetail, ...mapper }: MapperLinkProps) => ( {mapper.name} ); export const LdapMapperList = ({ toCreate, toDetail }: LdapMapperListProps) => { const { adminClient } = useAdminClient(); const navigate = useNavigate(); const { t } = useTranslation(); const { addAlert, addError } = useAlerts(); const [key, setKey] = useState(0); const refresh = () => setKey(key + 1); const [mappers, setMappers] = useState([]); const localeSort = useLocaleSort(); const { id } = useParams<{ id: string }>(); const [selectedMapper, setSelectedMapper] = useState(); useFetch( () => adminClient.components.find({ parent: id, type: "org.keycloak.storage.ldap.mappers.LDAPStorageMapper", }), (mapper) => { setMappers( localeSort( mapper.map((mapper) => ({ ...mapper, name: mapper.name, type: mapper.providerId, })), mapByKey("name"), ), ); }, [key], ); const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({ titleKey: t("deleteMappingTitle", { mapperId: selectedMapper?.id }), messageKey: "deleteMappingConfirm", continueButtonLabel: "delete", continueButtonVariant: ButtonVariant.danger, onConfirm: async () => { try { await adminClient.components.del({ id: selectedMapper!.id!, }); refresh(); addAlert(t("mappingDeletedSuccess"), AlertVariant.success); setSelectedMapper(undefined); } catch (error) { addError("mappingDeletedError", error); } }, }); return ( <> } actions={[ { title: t("delete"), onRowClick: (mapper) => { setSelectedMapper(mapper); toggleDeleteDialog(); }, } as Action, ]} columns={[ { name: "name", cellRenderer: (row) => , }, { name: "type", }, ]} emptyState={ navigate(toCreate)} /> } /> ); };