import React, { useMemo } from "react"; import type { Agent } from "@migration-planner-ui/api-client/models"; import { Button, Icon, Popover, Spinner, Split, SplitItem, TextContent, Text, } from "@patternfly/react-core"; import { DisconnectedIcon, ExclamationCircleIcon, CheckCircleIcon, InfoCircleIcon, } from "@patternfly/react-icons"; import globalDangerColor200 from "@patternfly/react-tokens/dist/esm/global_danger_color_200"; import globalInfoColor100 from "@patternfly/react-tokens/dist/esm/global_info_color_100"; import globalSuccessColor100 from "@patternfly/react-tokens/dist/esm/global_success_color_100"; import { Link } from "react-router-dom"; // eslint-disable-next-line @typescript-eslint/no-namespace export namespace AgentStatusView { export type Props = { status: Agent["status"]; statusInfo?: Agent["statusInfo"]; credentialUrl?: Agent["credentialUrl"]; }; } const StatusInfoWaitingForCredentials: React.FC<{ credentialUrl?: Agent["credentialUrl"]; }> = ({ credentialUrl }) => { return ( <> Click the link below to connect the Discovery Environment to your VMware environment. {credentialUrl && ( {credentialUrl} )} ); }; export const AgentStatusView: React.FC = (props) => { const { status, statusInfo, credentialUrl } = props; const statusView = useMemo(() => { // eslint-disable-next-line prefer-const let fake: Agent["status"] | null = null; // fake = "not-connected"; // fake = "waiting-for-credentials"; // fake = "gathering-initial-inventory"; // fake = "up-to-date"; // fake = "error"; switch (fake ?? status) { case "not-connected": return { icon: ( ), text: "Not connected", }; case "waiting-for-credentials": return { icon: ( ), text: "Waiting for credentials", }; case "gathering-initial-inventory": return { icon: ( ), text: "Gathering inventory", }; case "error": return { icon: ( ), text: "Error", }; case "up-to-date": return { icon: ( ), text: "Ready", }; } }, [status]); return ( {statusView && statusView.icon} {statusInfo || statusView && statusView.text==='Waiting for credentials' ? ( {statusInfo} ) : ( ) } > ) : ( statusView && statusView.text )} ); }; AgentStatusView.displayName = "AgentStatusView";