import "./Relay.css"; import { useMemo } from "react"; import { useIntl, FormattedMessage } from "react-intl"; import { useNavigate } from "react-router-dom"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faPlug, faSquareCheck, faSquareXmark, faWifi, faPlugCircleXmark, faGear, faWarning, } from "@fortawesome/free-solid-svg-icons"; import { RelaySettings } from "@snort/nostr"; import useRelayState from "Feed/RelayState"; import { System } from "System"; import { getRelayName, unixNowMs, unwrap } from "Util"; import messages from "./messages"; import useLogin from "Hooks/useLogin"; import { setRelays } from "Login"; export interface RelayProps { addr: string; } export default function Relay(props: RelayProps) { const { formatMessage } = useIntl(); const navigate = useNavigate(); const login = useLogin(); const relaySettings = unwrap(login.relays.item[props.addr] ?? System.Sockets.get(props.addr)?.Settings ?? {}); const state = useRelayState(props.addr); const name = useMemo(() => getRelayName(props.addr), [props.addr]); function configure(o: RelaySettings) { setRelays( login, { ...login.relays.item, [props.addr]: o, }, unixNowMs() ); } const latency = Math.floor(state?.avgLatency ?? 0); return ( <>