/* eslint-disable */ // @ts-nocheck import type IdentityProviderRepresentation from "@keycloak/keycloak-admin-client/lib/defs/identityProviderRepresentation"; import { KeycloakSpinner, useAlerts, useFetch, } from "../../shared/keycloak-ui-shared"; import { Button, ButtonVariant, DataList, DataListCell, DataListControl, DataListDragButton, DataListItem, DataListItemCells, DataListItemRow, DragDrop, Draggable, DraggableItemPosition, Droppable, Modal, ModalVariant, Text, TextContent, } from "../../shared/@patternfly/react-core"; import { sortBy } from "lodash-es"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import { useAdminClient } from "../admin-client"; type ManageOrderDialogProps = { orgId?: string; hideRealmBasedIdps?: boolean; onClose: () => void; }; export const ManageOrderDialog = ({ orgId, hideRealmBasedIdps = false, onClose, }: ManageOrderDialogProps) => { const { adminClient } = useAdminClient(); const { t } = useTranslation(); const { addAlert, addError } = useAlerts(); const [liveText, setLiveText] = useState(""); const [providers, setProviders] = useState(); const [order, setOrder] = useState([]); const onDragStart = ({ index }: DraggableItemPosition) => { setLiveText(t("onDragStart", { item: order[index] })); return true; }; const onDragMove = ({ index }: DraggableItemPosition) => { setLiveText(t("onDragMove", { item: order[index] })); }; const onDragFinish = ( source: DraggableItemPosition, dest?: DraggableItemPosition, ) => { if (dest) { const result = [...order]; const [removed] = result.splice(source.index, 1); result.splice(dest.index, 0, removed); setLiveText(t("onDragFinish", { list: result })); setOrder(result); return true; } else { setLiveText(t("onDragCancel")); return false; } }; useFetch( () => orgId ? adminClient.organizations.listIdentityProviders({ orgId }) : adminClient.identityProviders.find({ realmOnly: hideRealmBasedIdps }), (providers) => { setProviders(providers); setOrder( sortBy(providers, ["config.guiOrder", "alias"]).map( (provider) => provider.alias!, ), ); }, [], ); if (!providers) { return ; } return ( { const updates = order.map((alias, index) => { const provider = providers.find((p) => p.alias === alias)!; provider.config!.guiOrder = index; return adminClient.identityProviders.update({ alias }, provider); }); try { await Promise.all(updates); addAlert(t("orderChangeSuccess")); } catch (error) { addError("orderChangeError", error); } onClose(); }} > {t("save")} , , ]} > {t("orderDialogIntro")} {order.map((alias) => ( {alias} , ]} /> ))}
{liveText}
); };