import { useEffect, useState } from "react"; import Navigation from "@/components/landing/Navigation"; import Footer from "@/components/landing/Footer"; import FAQSection from "@/components/landing/FAQSection"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { apiRequest, getQueryFn } from "@/lib/queryClient"; import { toast } from "@/hooks/use-toast"; import { useQuery } from "@tanstack/react-query"; type SessionUser = { id: string; username: string; }; export default function SupportPage() { const [form, setForm] = useState({ name: "", email: "", subject: "", message: "", }); const [ticketId, setTicketId] = useState(""); const [statusEmail, setStatusEmail] = useState(""); const [statusResult, setStatusResult] = useState(null); const [submitting, setSubmitting] = useState(false); const [checking, setChecking] = useState(false); const { data: sessionUser } = useQuery({ queryKey: ["/me"], queryFn: getQueryFn({ on401: "returnNull" }), }); const sessionEmail = sessionUser?.username?.trim() || ""; useEffect(() => { if (sessionEmail) { setForm((prev) => ({ ...prev, email: sessionEmail })); setStatusEmail(sessionEmail); } }, [sessionEmail]); const submitTicket = async () => { const effectiveEmail = sessionEmail || form.email.trim(); if (!form.name.trim() || !effectiveEmail || !form.subject.trim() || !form.message.trim()) { toast({ title: "Please fill all fields." }); return; } setSubmitting(true); try { const res = await apiRequest("POST", "/support/ticket", { ...form, email: effectiveEmail, }); const data = await res.json(); setTicketId(data.ticket_id || ""); toast({ title: "Ticket created", description: `Ticket ID: ${data.ticket_id}` }); setForm({ name: "", email: "", subject: "", message: "" }); } catch (err: any) { toast({ title: "Failed to create ticket", description: err?.message || "Try again." }); } finally { setSubmitting(false); } }; const checkStatus = async () => { const effectiveEmail = sessionEmail || statusEmail.trim(); if (!ticketId.trim() || !effectiveEmail) { toast({ title: "Enter ticket ID and email." }); return; } setChecking(true); try { const res = await apiRequest("POST", `/support/ticket/status/${ticketId.trim()}`, { email: effectiveEmail, }); const data = await res.json(); setStatusResult(data); } catch (err: any) { setStatusResult(null); toast({ title: "Ticket not found", description: "Check ticket ID and email." }); } finally { setChecking(false); } }; return (

Support Center

Need help? Create a support ticket and we’ll get back to you.

Contact support

setForm((p) => ({ ...p, name: e.target.value }))} /> setForm((p) => ({ ...p, email: e.target.value }))} disabled={Boolean(sessionEmail)} /> setForm((p) => ({ ...p, subject: e.target.value }))} />