import { useNavigate, useParams } from "@solidjs/router" import { Show, createEffect, createResource, createSignal } from "solid-js" import { adminGetRelay, adminUpdateRelay, type RelayConfig } from "../../lib/api" import RelayForm from "../../components/RelayForm" import { slugify } from "../../lib/slugify" import BackLink from "../../components/BackLink" import PageContainer from "../../components/PageContainer" import ResourceState from "../../components/ResourceState" import useMinLoading from "../../components/useMinLoading" const DEFAULT_CONFIG: RelayConfig = { policy: { public_join: false, strip_signatures: false }, groups: { enabled: false, auto_join: false }, management: { enabled: false }, blossom: { enabled: false }, livekit: { enabled: false }, push: { enabled: false }, } export default function AdminRelayEdit() { const navigate = useNavigate() const params = useParams() const relayId = () => params.id ?? "" const [relay] = createResource(relayId, adminGetRelay) const loading = useMinLoading(() => relay.loading) const [name, setName] = createSignal("") const [subdomain, setSubdomain] = createSignal("") const [icon, setIcon] = createSignal("") const [description, setDescription] = createSignal("") const [error, setError] = createSignal("") const [submitting, setSubmitting] = createSignal(false) createEffect(() => { const data = relay() if (!data) return setName(data.name) setSubdomain(data.subdomain) setIcon(data.icon) setDescription(data.description) }) async function handleSubmit(e: Event) { e.preventDefault() setError("") setSubmitting(true) try { await adminUpdateRelay(relayId(), { name: name().trim(), subdomain: slugify(subdomain()), icon: icon().trim(), description: description().trim(), config: relay()?.config ?? DEFAULT_CONFIG, }) navigate(`/admin/relays/${relayId()}`) } catch (e) { setError(e instanceof Error ? e.message : "Failed to update relay") } finally { setSubmitting(false) } } return (

Edit Relay (Admin)

) }