'use client' import { Button } from '@/components/ui/button' import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@/components/ui/form' import { Input } from '@/components/ui/input' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select' import { Textarea } from '@/components/ui/textarea' import { AlertTriangle, Check, Loader2 } from 'lucide-react' import { useState } from 'react' import { useForm } from 'react-hook-form' import { z } from 'zod' import { zodResolver } from '@hookform/resolvers/zod' import { toast } from '@/hooks/use-toast' import httpBrowserClient from '@/lib/httpBrowserClient' import { ApiEndpoints } from '@/config/api' import { useRouter } from 'next/navigation' import { useSession } from 'next-auth/react' const SupportFormSchema = z.object({ name: z.string().min(1, { message: 'Name is required' }), email: z.string().email({ message: 'Invalid email address' }), phone: z.string().optional(), category: z.enum(['general', 'technical', 'billing-and-payments', 'other'], { message: 'Support category is required', }), message: z.string().min(1, { message: 'Message is required' }), }) export default function SupportForm() { const [isSubmitting, setIsSubmitting] = useState(false) const [isSubmitSuccessful, setIsSubmitSuccessful] = useState(false) const [errorMessage, setErrorMessage] = useState(null) const router = useRouter() const { data: session } = useSession() const form = useForm({ resolver: zodResolver(SupportFormSchema), defaultValues: { name: session?.user?.name || '', email: session?.user?.email || '', phone: session?.user?.phone || '', category: 'general', message: '', }, }) const onSubmit = async (data: any) => { setIsSubmitting(true) setErrorMessage(null) try { // Use the existing httpBrowserClient to call the NestJS endpoint const response = await httpBrowserClient.post( ApiEndpoints.support.customerSupport(), data ) setIsSubmitSuccessful(true) toast({ title: 'Support request submitted', description: response.data.message || 'We will get back to you soon.', }) } catch (error) { console.error('Error submitting support request:', error) setErrorMessage( 'Error submitting support request. Please try again later.' ) toast({ title: 'Error submitting support request', description: 'Please try again later', variant: 'destructive', }) } finally { setIsSubmitting(false) } } return (
( Support Category )} /> ( Name )} /> ( Email )} /> ( Phone (Optional) )} /> ( Message