'use client' import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from '@/components/ui/card' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Textarea } from '@/components/ui/textarea' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select' import { useForm, useFieldArray, Controller } from 'react-hook-form' import { zodResolver } from '@hookform/resolvers/zod' import { sendSmsSchema } from '@/lib/schemas' import type { SendSmsFormData } from '@/lib/schemas' import { MessageSquare, Send, Plus, X, UserCircle, Check } from 'lucide-react' import { useToast } from '@/hooks/use-toast' import httpBrowserClient from '@/lib/httpBrowserClient' import { ApiEndpoints } from '@/config/api' import { useMutation, useQuery } from '@tanstack/react-query' import { Spinner } from '@/components/ui/spinner' export default function SendSms() { const { data: devices, isLoading: isLoadingDevices } = useQuery({ queryKey: ['devices'], queryFn: () => httpBrowserClient .get(ApiEndpoints.gateway.listDevices()) .then((res) => res.data), }) const { mutate: sendSms, isPending: isSendingSms, error: sendSmsError, isSuccess: isSendSmsSuccess, } = useMutation({ mutationKey: ['send-sms'], mutationFn: (data: SendSmsFormData) => httpBrowserClient.post(ApiEndpoints.gateway.sendSMS(data.deviceId), data), }) const { toast } = useToast() const { register, control, handleSubmit, formState: { errors }, } = useForm({ resolver: zodResolver(sendSmsSchema), defaultValues: { deviceId: devices?.data?.length === 1 ? devices?.data?.[0]?._id : undefined, recipients: [''], message: '', }, }) const { fields, append, remove } = useFieldArray({ control, // @ts-expect-error name: 'recipients', }) return (
Send SMS
Send a message to any recipient(s)
handleSubmit((data) => sendSms(data))(e)} className='space-y-4' >
( )} /> {errors.deviceId && (

{errors.deviceId.message}

)}
{fields.map((field, index) => (
{errors.recipients?.[index] && (

{errors.recipients[index].message}

)}
))} {errors.recipients && (

{errors.recipients.message}

)} {errors.recipients?.root && (

{errors.recipients.root.message}

)}