import "./Relay.css"; import { useMemo } from "react"; import { FormattedMessage } from "react-intl"; import { useNavigate } from "react-router-dom"; import { RelaySettings } from "@snort/system"; import { unixNowMs } from "@snort/shared"; import useRelayState from "Feed/RelayState"; import { System } from "index"; import { getRelayName, unwrap } from "SnortUtils"; import useLogin from "Hooks/useLogin"; import { setRelays } from "Login"; import Icon from "Icons/Icon"; import messages from "./messages"; export interface RelayProps { addr: string; } export default function Relay(props: RelayProps) { const navigate = useNavigate(); const login = useLogin(); const relaySettings = unwrap( login.relays.item[props.addr] ?? System.Sockets.find(a => a.address === 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() ); } return ( <>