/* eslint-disable */ // @ts-nocheck import type UserRepresentation from "@keycloak/keycloak-admin-client/lib/defs/userRepresentation"; import { Button, Modal, ModalVariant, Label } from "../../shared/@patternfly/react-core"; import { InfoCircleIcon } from "../../shared/@patternfly/react-icons"; import { differenceBy } from "lodash-es"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import { useAdminClient } from "../admin-client"; import { useAlerts } from "../../shared/keycloak-ui-shared"; import { ListEmptyState } from "../../shared/keycloak-ui-shared"; import { KeycloakDataTable } from "../../shared/keycloak-ui-shared"; import { emptyFormatter } from "../util"; type MemberModalProps = { membersQuery: (first?: number, max?: number) => Promise; onAdd: (users: UserRepresentation[]) => Promise; onClose: () => void; orgId?: string; titleKey?: string; confirmLabelKey?: string; filterEmptyEmail?: boolean; }; const UserDetail = (user: UserRepresentation) => { const { t } = useTranslation(); return ( <> {user.username}{" "} {!user.enabled && ( )} ); }; export const MemberModal = ({ membersQuery, onAdd, onClose, orgId, titleKey = "addMember", confirmLabelKey = "add", filterEmptyEmail = false, }: MemberModalProps) => { const { adminClient } = useAdminClient(); const { t } = useTranslation(); const { addError } = useAlerts(); const [selectedRows, setSelectedRows] = useState([]); const loader = async (first?: number, max?: number, search?: string) => { const members = await membersQuery(first, max); const params: { [name: string]: string | number } = { first: first!, max: max! + members.length, search: search || "", }; const usersQuery = orgId ? async (params: { [name: string]: string | number }) => { return await adminClient.organizations.listMembers({ orgId, ...params, }); } : async (params: { [name: string]: string | number }) => { return await adminClient.users.find({ ...params }); }; try { const users = await usersQuery(params); const filtered = differenceBy(users, members, "id"); return ( filterEmptyEmail ? filtered.filter((u) => u.email) : filtered ).slice(0, max); } catch (error) { addError("noUsersFoundError", error); return []; } }; return ( { await onAdd(selectedRows); onClose(); }} > {t(confirmLabelKey)} , , ]} > setSelectedRows([...rows])} emptyState={ } columns={[ { name: "username", displayKey: "username", cellRenderer: UserDetail, }, { name: "email", displayKey: "email", cellFormatters: [emptyFormatter()], }, { name: "lastName", displayKey: "lastName", cellFormatters: [emptyFormatter()], }, { name: "firstName", displayKey: "firstName", cellFormatters: [emptyFormatter()], }, ]} /> ); };