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 { RELAY_PLAN_IDS, type RelayPlanId } from "../../lib/relayPlans" import { slugify } from "../../lib/slugify" import BackLink from "../../components/BackLink" import PageContainer from "../../components/PageContainer" import ResourceState from "../../components/ResourceState" export default function AdminRelayEdit() { const navigate = useNavigate() const params = useParams() const relayId = () => params.id ?? "" const [relay] = createResource(relayId, adminGetRelay) const [name, setName] = createSignal("") const [subdomain, setSubdomain] = createSignal("") const [icon, setIcon] = createSignal("") const [description, setDescription] = createSignal("") const [plan, setPlan] = createSignal("free") 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) setPlan(RELAY_PLAN_IDS.includes(data.plan as RelayPlanId) ? (data.plan as RelayPlanId) : "free") }) 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(), plan: plan(), }) navigate(`/admin/relays/${relayId()}`) } catch (e) { setError(e instanceof Error ? e.message : "Failed to update relay") } finally { setSubmitting(false) } } return (

Edit Relay (Admin)

) }