import { useState } from "react"; import { useRelayStatus } from "../../hooks/useRelayStatus"; function shortenUrl(url: string): string { return url.replace(/^wss?:\/\//, "").replace(/\/$/, ""); } export function RelayStatusBadge() { const { connectedCount, totalCount, relays } = useRelayStatus(); const [hovered, setHovered] = useState(false); const ratio = totalCount > 0 ? connectedCount / totalCount : 0; const colorClass = ratio > 0.75 ? "text-success" : ratio > 0.25 ? "text-warning" : "text-danger"; const dotClass = ratio > 0.75 ? "bg-success" : ratio > 0.25 ? "bg-warning" : "bg-danger"; if (totalCount === 0) return null; return ( setHovered(true)} onMouseLeave={() => setHovered(false)} > {connectedCount}/{totalCount} relays {hovered && (
{relays .sort((a, b) => (a.connected === b.connected ? 0 : a.connected ? -1 : 1)) .map((r) => (
{shortenUrl(r.url)}
))}
)}
); }