"use client"; import type { CreateServerRequest } from "@minikura/api"; import { ArrowLeft } from "lucide-react"; import { useRouter } from "next/navigation"; import { ServerForm, type ServerFormData } from "@/components/server-form"; import { PageHeader, PageShell } from "@/components/page-layout"; import { SectionCard } from "@/components/section-card"; import { Button } from "@/components/ui/button"; import { api } from "@/lib/api-client"; import { toCommonServerRequestFields } from "@/lib/server-form/mappings"; export default function CreateServerPage() { const router = useRouter(); const handleSubmit = async (data: ServerFormData) => { const payload: CreateServerRequest = { id: data.id.trim(), type: "STATEFUL", ...toCommonServerRequestFields(data), }; const response = await api.api.servers.post(payload); if (response.error) { const errorMsg = typeof response.error === "object" && response.error && "value" in response.error && typeof response.error.value === "object" && response.error.value && "message" in response.error.value ? String(response.error.value.message) : "Failed to create server"; throw new Error(errorMsg); } const pluginResponse = await api.api.registry .servers({ serverId: payload.id }) .plugins.put({ artifactIds: data.registryArtifactIds }); if (pluginResponse.error) throw new Error("Server created, but plugin deployment failed"); router.push("/dashboard/servers"); }; return ( router.push("/dashboard/servers")}> } className="flex-row items-center justify-start" /> router.push("/dashboard/servers")} submitLabel="Create Server" /> ); }