import { useLanguage } from "../contexts/LanguageContext"; import { useListWhatsappLog, useSendWhatsapp, getListWhatsappLogQueryKey, getListRequestsQueryKey, useListRequests, } from "@workspace/api-client-react"; import { useQueryClient } from "@tanstack/react-query"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Skeleton } from "@/components/ui/skeleton"; import { Separator } from "@/components/ui/separator"; import { MessageSquare, Phone, Send, CheckCircle, Clock, XCircle } from "lucide-react"; export default function WhatsappLog() { const { t } = useLanguage(); const queryClient = useQueryClient(); const { data: logs, isLoading } = useListWhatsappLog(); const { data: allRequests } = useListRequests(); const sendWhatsapp = useSendWhatsapp(); const getRequestByCase = (caseId: string) => allRequests?.find((r) => r.caseId === caseId); const handleSend = (caseId: string) => { const req = getRequestByCase(caseId); if (!req) return; sendWhatsapp.mutate( { id: req.id }, { onSuccess: () => { queryClient.invalidateQueries({ queryKey: getListWhatsappLogQueryKey() }); queryClient.invalidateQueries({ queryKey: getListRequestsQueryKey() }); }, } ); }; const statusConfig = { pending: { icon: Clock, className: "bg-amber-100 text-amber-700 border-amber-200", label: t.whatsapp.pending, }, sent: { icon: CheckCircle, className: "bg-green-100 text-green-700 border-green-200", label: t.whatsapp.sent, }, failed: { icon: XCircle, className: "bg-red-100 text-red-700 border-red-200", label: t.whatsapp.failed, }, }; return (

{t.whatsapp.title}

{isLoading ? (
{[1, 2, 3].map((i) => ( ))}
) : !logs || logs.length === 0 ? ( {t.whatsapp.noEntries} ) : (
{logs.map((log) => { const status = statusConfig[log.status as keyof typeof statusConfig] || statusConfig.pending; const StatusIcon = status.icon; return (
{log.caseId} {status.label}
{log.status === "pending" && ( )}
{/* Donor Info */}

{t.whatsapp.donor}

{log.donorName}

{log.donorPhone}
{/* Beneficiary Message */}

{t.thankYou.beneficiaryMessageLabel}

"{log.beneficiaryMessage}"

{/* WhatsApp Message Preview */}

{t.whatsapp.message}

{log.whatsappMessage}
{log.sentAt && (

{t.whatsapp.sentAt}: {new Date(log.sentAt).toLocaleString()}

)}
); })}
)}
); }