/* eslint-disable */ // @ts-nocheck import IdentityProviderRepresentation from "@keycloak/keycloak-admin-client/lib/defs/identityProviderRepresentation"; import { KeycloakDataTable, ListEmptyState, useAlerts, useFetch, } from "../../shared/keycloak-ui-shared"; import { Button, ButtonVariant, PageSection, Switch, ToolbarItem, } from "../../shared/@patternfly/react-core"; import { sortBy } from "lodash-es"; import { BellIcon } from "../../shared/@patternfly/react-icons"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import { Link, useParams } from "react-router-dom"; import { useAdminClient } from "../admin-client"; import { useConfirmDialog } from "../components/confirm-dialog/ConfirmDialog"; import { ManageOrderDialog } from "../identity-providers/ManageOrderDialog"; import { toIdentityProvider } from "../identity-providers/routes/IdentityProvider"; import { useRealm } from "../context/realm-context/RealmContext"; import useToggle from "../utils/useToggle"; import { LinkIdentityProviderModal } from "./LinkIdentityProviderModal"; import { EditOrganizationParams } from "./routes/EditOrganization"; type ShownOnLoginPageCheckProps = { row: IdentityProviderRepresentation; refresh: () => void; }; const ShownOnLoginPageCheck = ({ row, refresh, }: ShownOnLoginPageCheckProps) => { const { adminClient } = useAdminClient(); const { addAlert, addError } = useAlerts(); const { t } = useTranslation(); const toggle = async (value: boolean) => { try { await adminClient.identityProviders.update( { alias: row.alias! }, { ...row, hideOnLogin: value, }, ); addAlert(t("linkUpdatedSuccessful")); refresh(); } catch (error) { addError("linkUpdatedError", error); } }; return ( toggle(value)} /> ); }; export const IdentityProviders = () => { const { adminClient } = useAdminClient(); const { t } = useTranslation(); const { id: orgId } = useParams(); const { realm } = useRealm(); const { addAlert, addError } = useAlerts(); const [key, setKey] = useState(0); const refresh = () => setKey(key + 1); const [manageDisplayDialog, setManageDisplayDialog] = useState(false); const [hasProviders, setHasProviders] = useState(false); const [selectedRow, setSelectedRow] = useState(); const [open, toggleOpen] = useToggle(); useFetch( async () => adminClient.identityProviders.find({ max: 1 }), (providers) => { setHasProviders(providers.length === 1); }, [], ); const loader = async () => { const providers = await adminClient.organizations.listIdentityProviders({ orgId: orgId!, }); return sortBy(providers, "alias"); }; const [toggleUnlinkDialog, UnlinkConfirm] = useConfirmDialog({ titleKey: "identityProviderUnlink", messageKey: "identityProviderUnlinkConfirm", continueButtonLabel: "unLinkIdentityProvider", continueButtonVariant: ButtonVariant.danger, onConfirm: async () => { try { await adminClient.organizations.unLinkIdp({ orgId: orgId!, alias: selectedRow!.alias! as string, }); setSelectedRow(undefined); addAlert(t("unLinkSuccessful")); refresh(); } catch (error) { addError("unLinkError", error); } }, }); return ( <> {manageDisplayDialog && ( { setManageDisplayDialog(false); refresh(); }} /> )} {open && ( { toggleOpen(); refresh(); }} /> )} {!hasProviders ? ( ) : ( } actions={[ { title: t("edit"), onRowClick: (row) => { setSelectedRow(row); toggleOpen(); }, }, { title: t("unLinkIdentityProvider"), onRowClick: (row) => { setSelectedRow(row); toggleUnlinkDialog(); }, }, ]} columns={[ { name: "alias", cellRenderer: (row) => ( {row.alias} ), }, { name: "config['kc.org.domain']", displayKey: "domain", }, { name: "providerId", displayKey: "providerDetails", }, { name: "hideOnLogin", displayKey: "hideOnLoginPage", cellRenderer: (row) => ( ), }, ]} emptyState={ } /> )} ); };