import { LoaderIcon } from "@lume/icons"; import { NIP11 } from "@lume/types"; import { User } from "@lume/ui"; import { Suspense } from "react"; import { useTranslation } from "react-i18next"; import { Await, useLoaderData, useParams } from "react-router-dom"; import { RelayEventList } from "./components/relayEventList"; export function RelayUrlScreen() { const { t } = useTranslation(); const { url } = useParams(); const data: { relay?: { [key: string]: string } } = useLoaderData(); const getSoftwareName = (url: string) => { const filename = url.substring(url.lastIndexOf("/") + 1); return filename.replace(".git", ""); }; const titleCase = (s: string) => { return s .replace(/^[-_]*(.)/, (_, c) => c.toUpperCase()) .replace(/[-_]+(.)/g, (_, c) => ` ${c.toUpperCase()}`); }; return (
{t("global.loading")}
} >

{t("relays.relayView.empty")}

} > {(resolvedRelay: NIP11) => (

{resolvedRelay.name}

{resolvedRelay.description}

{resolvedRelay.pubkey ? (
{t("relays.relayView.owner")}:
) : null} {resolvedRelay.contact ? (
{t("relays.relayView.contact")}:
{resolvedRelay.contact}
) : null}
{t("relays.relayView.software")}:
{`${getSoftwareName(resolvedRelay.software)} - ${ resolvedRelay.version }`}
{t("relays.relayView.nips")}:
{resolvedRelay.supported_nips.map((item) => ( {item} ))}
{resolvedRelay.limitation ? (
{t("relays.relayView.limit")}
{Object.keys(resolvedRelay.limitation).map((key) => { return (

{titleCase(key)}:

{resolvedRelay.limitation[key].toString()}

); })}
) : null} {resolvedRelay.payments_url ? (
{t("relays.relayView.payment")} {t("relays.relayView.paymentNote")}
) : null}
)} ); }