/* eslint-disable */ // @ts-nocheck import { AlertVariant, Button, ButtonVariant, ExpandableSection, FormGroup, Split, SplitItem, ToolbarItem, } from "../../../shared/@patternfly/react-core"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import { HelpItem } from "../../../shared/keycloak-ui-shared"; import { useAdminClient } from "../../admin-client"; import { useAlerts } from "../../../shared/keycloak-ui-shared"; import { useConfirmDialog } from "../../components/confirm-dialog/ConfirmDialog"; import { FormAccess } from "../../components/form/FormAccess"; import { ListEmptyState } from "../../../shared/keycloak-ui-shared"; import { Action, KeycloakDataTable } from "../../../shared/keycloak-ui-shared"; import { TimeSelectorForm } from "../../components/time-selector/TimeSelectorForm"; import useFormatDate, { FORMAT_DATE_AND_TIME } from "../../utils/useFormatDate"; import { AddHostDialog } from ".././advanced/AddHostDialog"; import { AdvancedProps, parseResult } from "../AdvancedTab"; type Node = { host: string; registration: string; }; export const ClusteringPanel = ({ save, client: { id, registeredNodes, access }, }: AdvancedProps) => { const { adminClient } = useAdminClient(); const { t } = useTranslation(); const { addAlert, addError } = useAlerts(); const formatDate = useFormatDate(); const [nodes, setNodes] = useState(registeredNodes || {}); const [expanded, setExpanded] = useState(false); const [selectedNode, setSelectedNode] = useState(""); const [addNodeOpen, setAddNodeOpen] = useState(false); const [key, setKey] = useState(0); const refresh = () => setKey(new Date().getTime()); const testCluster = async () => { const result = await adminClient.clients.testNodesAvailable({ id: id! }); parseResult(result, "testCluster", addAlert, t); }; const [toggleDeleteNodeConfirm, DeleteNodeConfirm] = useConfirmDialog({ titleKey: "deleteNode", messageKey: t("deleteNodeBody", { node: selectedNode, }), continueButtonLabel: "delete", continueButtonVariant: ButtonVariant.danger, onConfirm: async () => { try { await adminClient.clients.deleteClusterNode({ id: id!, node: selectedNode, }); setNodes({ ...Object.keys(nodes).reduce((object: any, key) => { if (key !== selectedNode) { object[key] = nodes[key]; } return object; }, {}), }); refresh(); addAlert(t("deleteNodeSuccess"), AlertVariant.success); } catch (error) { addError("deleteNodeFail", error); } }, }); return ( <> } > <> { nodes[node] = Date.now() / 1000; refresh(); }} onClose={() => setAddNodeOpen(false)} /> setExpanded(val)} isExpanded={expanded} > Promise.resolve( Object.entries(nodes).map((entry) => { return { host: entry[0], registration: entry[1] }; }), ) } toolbarItem={ <> } actions={[ { title: t("delete"), onRowClick: (node) => { setSelectedNode(node.host); toggleDeleteNodeConfirm(); }, } as Action, ]} columns={[ { name: "host", displayKey: "nodeHost", }, { name: "registration", displayKey: "lastRegistration", cellFormatters: [ (value) => value ? formatDate( new Date(parseInt(value.toString()) * 1000), FORMAT_DATE_AND_TIME, ) : "", ], }, ]} emptyState={ setAddNodeOpen(true)} /> } /> ); };