import { CancelIcon, PlusIcon } from "@lume/icons"; import { NostrQuery } from "@lume/system"; import { createFileRoute } from "@tanstack/react-router"; import { message } from "@tauri-apps/plugin-dialog"; import { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; export const Route = createFileRoute("/settings/relay")({ loader: async () => { const relays = await NostrQuery.getRelays(); return relays; }, component: Screen, }); function Screen() { const relayList = Route.useLoaderData(); const { register, reset, handleSubmit } = useForm(); const [relays, setRelays] = useState([]); const [isLoading, setIsLoading] = useState(false); const onSubmit = async (data: { url: string }) => { try { setIsLoading(true); const add = await NostrQuery.connectRelay(data.url); if (add) { setRelays((prev) => [...prev, data.url]); setIsLoading(false); reset(); } } catch (e) { setIsLoading(false); await message(String(e), { title: "Relay", kind: "error" }); } }; useEffect(() => { setRelays(relayList.connected); }, [relayList]); return (

Connected Relays

{relays.map((relay) => (
{relay}
))}

User Relays (NIP-65)

Lume will automatically connect to the user's relay list, but the manager function (like adding, removing, changing relay purpose) is not yet available.

{relayList.read?.map((relay) => (
{relay}
READ
))} {relayList.write?.map((relay) => (
{relay}
WRITE
))} {relayList.both?.map((relay) => (
{relay}
READ + WRITE
))}
); }