import { useNavigate, useParams } from "@solidjs/router" import { Show, createEffect, createResource, createSignal } from "solid-js" import { adminGetRelay, adminUpdateRelay } 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" 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.info_name) setSubdomain(data.subdomain) setIcon(data.info_icon) setDescription(data.info_description) }) async function handleSubmit(e: Event) { e.preventDefault() setError("") setSubmitting(true) try { await adminUpdateRelay(relayId(), { subdomain: slugify(subdomain()), info_name: name().trim(), info_icon: icon().trim(), info_description: description().trim(), }) navigate(`/admin/relays/${relayId()}`) } catch (e) { setError(e instanceof Error ? e.message : "Failed to update relay") } finally { setSubmitting(false) } } return (

Edit Relay (Admin)

) }