'use client' import { useEffect, useState, useRef } from 'react' import { useQuery } from '@tanstack/react-query' import { Card, CardContent } from '@/components/ui/card' import { Button } from '@/components/ui/button' import { Skeleton } from '@/components/ui/skeleton' import { Clock, Reply, ArrowUpRight, ArrowDownLeft, MessageSquare, Check, X, Smartphone, RefreshCw, Timer, } from 'lucide-react' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select' import { ApiEndpoints } from '@/config/api' import httpBrowserClient from '@/lib/httpBrowserClient' import { useForm, Controller } from 'react-hook-form' import { zodResolver } from '@hookform/resolvers/zod' import { sendSmsSchema } from '@/lib/schemas' import type { SendSmsFormData } from '@/lib/schemas' import { useMutation } from '@tanstack/react-query' import { Spinner } from '@/components/ui/spinner' import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger, } from '@/components/ui/dialog' import { Input } from '@/components/ui/input' import { Textarea } from '@/components/ui/textarea' import { Badge } from '@/components/ui/badge' function ReplyDialog({ sms, onClose }: { sms: any; onClose?: () => void }) { const [open, setOpen] = useState(false) const { mutate: sendSms, isPending: isSendingSms, error: sendSmsError, isSuccess: isSendSmsSuccess, } = useMutation({ mutationKey: ['send-sms'], mutationFn: (data: SendSmsFormData) => httpBrowserClient.post(ApiEndpoints.gateway.sendSMS(data.deviceId), data), onSuccess: () => { setTimeout(() => { setOpen(false) if (onClose) onClose() }, 1500) }, }) const { register, control, handleSubmit, formState: { errors }, reset, } = useForm({ resolver: zodResolver(sendSmsSchema), defaultValues: { deviceId: sms?.device?._id, recipients: [sms.sender], message: '', }, }) const { data: devices, isLoading: isLoadingDevices } = useQuery({ queryKey: ['devices'], queryFn: () => httpBrowserClient .get(ApiEndpoints.gateway.listDevices()) .then((res) => res.data), }) useEffect(() => { if (open) { reset({ deviceId: sms?.device?._id, recipients: [sms.sender], message: '', }) } }, [open, sms, reset]) return ( Reply to {sms.sender} Send a reply message to this sender
handleSubmit((data) => sendSms(data))(e)} className='space-y-4 mt-4' >
( )} /> {errors.deviceId && (

{errors.deviceId.message}

)}
{errors.recipients?.[0] && (

{errors.recipients[0].message}

)}