/* eslint-disable */ // @ts-nocheck import { NetworkError } from "@keycloak/keycloak-admin-client"; import { KeycloakDataTable, useAlerts, useEnvironment, } from "../../shared/keycloak-ui-shared"; import { AlertVariant, Badge, Button, Dropdown, DropdownItem, DropdownList, MenuToggle, PageSection, Popover, ToolbarItem, } from "../../shared/@patternfly/react-core"; import { EllipsisVIcon } from "../../shared/@patternfly/react-icons"; import { cellWidth } from "../../shared/@patternfly/react-table"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import { Link, useNavigate } from "react-router-dom"; import { useAdminClient } from "../admin-client"; import { useConfirmDialog } from "../components/confirm-dialog/ConfirmDialog"; import { ViewHeader } from "../components/view-header/ViewHeader"; import { fetchAdminUI } from "../context/auth/admin-ui-endpoint"; import { useRealm } from "../context/realm-context/RealmContext"; import { useRecentRealms } from "../context/RecentRealms"; import { useWhoAmI } from "../context/whoami/WhoAmI"; import type { Environment } from "../environment-types"; import { resolveDisplayName } from "../util"; import NewRealmForm from "./add/NewRealmForm"; import { toRealm } from "./RealmRoutes"; import { toDashboard } from "../dashboard/routes/Dashboard"; export type RealmNameRepresentation = { name: string; displayName?: string; }; const RecentRealmsDropdown = () => { const { t } = useTranslation(); const [open, setOpen] = useState(false); const recentRealms = useRecentRealms(); if (recentRealms.length < 3) return null; return ( setOpen(isOpen)} toggle={(ref) => ( setOpen(!open)} > {t("recentRealms")} )} isOpen={open} > {recentRealms.map(({ name }) => ( ( )} > {name} ))} ); }; type KebabDropdownProps = { onClick: () => void; isDisabled?: boolean; }; const KebabDropdown = ({ onClick, isDisabled }: KebabDropdownProps) => { const { t } = useTranslation(); const [open, setOpen] = useState(false); return ( setOpen(isOpen)} toggle={(ref) => ( setOpen(!open)} variant="plain" isDisabled={isDisabled} > )} isOpen={open} > { setOpen(false); onClick(); }} > {t("delete")} ); }; type RealmRow = RealmNameRepresentation & { id: string }; export default function RealmSection() { const { t } = useTranslation(); const navigate = useNavigate(); const { whoAmI } = useWhoAmI(); const { realm } = useRealm(); const { environment } = useEnvironment(); const { adminClient } = useAdminClient(); const { addAlert, addError } = useAlerts(); const [selected, setSelected] = useState([]); const [openNewRealm, setOpenNewRealm] = useState(false); const [key, setKey] = useState(0); const refresh = () => setKey(key + 1); const loader = async (first?: number, max?: number, search?: string) => { try { const result = await fetchAdminUI( adminClient, "ui-ext/realms/names", { first: `${first}`, max: `${max}`, search: search || "" }, ); return result.map((r) => ({ ...r, id: r.name })); } catch (error) { if (error instanceof NetworkError && error.response.status < 500) { return []; } throw error; } }; const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({ titleKey: t("deleteConfirmRealm", { count: selected.length, name: selected[0]?.name, }), messageKey: "deleteConfirmRealmSetting", continueButtonLabel: "delete", onConfirm: async () => { try { if (selected.some(({ name }) => name === environment.masterRealm)) { addAlert(t("cantDeleteMasterRealm"), AlertVariant.warning); } const filtered = selected.filter( ({ name }) => name !== environment.masterRealm, ); if (filtered.length === 0) return; await Promise.all( filtered.map(({ name: realmName }) => adminClient.realms.del({ realm: realmName }), ), ); addAlert(t("deletedSuccessRealmSetting")); if (selected.some(({ name }) => name === realm)) { navigate(toRealm({ realm: environment.masterRealm })); } refresh(); setSelected([]); } catch (error) { addError("deleteError", error); } }, }); return ( <> {openNewRealm && ( { setOpenNewRealm(false); refresh(); }} /> )} { setSelected([selected]); toggleDeleteDialog(); }, }, ]} toolbarItem={ <> {whoAmI.createRealm && ( )} } columns={[ { name: "name", transforms: [cellWidth(20)], cellRenderer: ({ name }) => name !== realm ? ( {name} ) : ( <> {name} {t("currentRealm")} ), }, { name: "displayName", transforms: [cellWidth(80)], cellRenderer: ({ displayName }) => resolveDisplayName(t, displayName, "—"), }, ]} /> ); }