import { faXmark } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { formatDistance } from "date-fns"; import { CheckIcon, RotateCwIcon, XIcon } from "lucide-react"; import { Tooltip } from "@app/components/v2"; import { Badge } from "@app/components/v3"; import { SecretScanningScanStatus } from "@app/hooks/api/secretScanningV2"; type Props = { status: SecretScanningScanStatus; statusMessage?: string | null; scannedAt?: string | null; }; export const SecretScanningScanStatusBadge = ({ status, statusMessage, scannedAt }: Props) => { if (status === SecretScanningScanStatus.Failed) { let errorMessage = statusMessage; if (statusMessage) { try { errorMessage = JSON.stringify(JSON.parse(statusMessage), null, 2); } catch { errorMessage = statusMessage; } } return ( Failure Reason {errorMessage} {scannedAt && ( Attempted {formatDistance(new Date(scannedAt), new Date(), { addSuffix: true })} )} } > Scan Error ); } if (status === SecretScanningScanStatus.Queued || status === SecretScanningScanStatus.Scanning) { return ( Scanning ); } return ( Complete ); };