import React, { useState } from "react"; import { useQuery, useQueryClient } from "@tanstack/react-query"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Plus, MapPin, Activity, Wifi, WifiOff } from "lucide-react"; import { regionalService } from "@/services/regionalService"; import { RegionalService } from "@/types/regional.types"; import { AddRegionalAgentDialog } from "./AddRegionalAgentDialog"; import { RegionalAgentCard } from "./RegionalAgentCard"; import { useToast } from "@/hooks/use-toast"; import { useLanguage } from "@/contexts/LanguageContext"; export const RegionalMonitoringContent = () => { const { t } = useLanguage(); const [addDialogOpen, setAddDialogOpen] = useState(false); const { toast } = useToast(); const queryClient = useQueryClient(); const { data: regionalServices = [], isLoading, error } = useQuery({ queryKey: ['regional-services'], queryFn: regionalService.getRegionalServices, refetchInterval: 30000, // Refetch every 30 seconds }); const handleAgentAdded = () => { queryClient.invalidateQueries({ queryKey: ['regional-services'] }); toast({ title: t('regionalAgentAdded'), description: t('regionalAgentAddedDesc'), }); }; const handleDeleteAgent = async (id: string) => { try { await regionalService.deleteRegionalService(id); queryClient.invalidateQueries({ queryKey: ['regional-services'] }); toast({ title: t('agentRemoved'), description: t('agentRemovedDesc'), }); } catch (error) { toast({ title: t('error'), description: t('failedToRemoveAgent'), variant: "destructive", }); } }; const onlineAgents = regionalServices.filter(agent => agent.connection === 'online').length; const totalAgents = regionalServices.length; return (

{t('regionalmonitoring')}

{t('descriptRegionPage')}

{/* Stats Cards */}
{t('totalAgents')}
{totalAgents}

{t('regionalMonitoringAgents')}

{t('onlineAgents')}
{onlineAgents}

{t('currentlyConnected')}

{t('offlineAgents')}
{totalAgents - onlineAgents}

{t('disconnectedAgents')}

{/* Agents List */}

{t('regionalAgents')}

{isLoading ? (
{[...Array(3)].map((_, i) => (
))}
) : regionalServices.length === 0 ? (

{t('noRegionalAgents')}

{t('getStartedAddAgent')}

) : (
{regionalServices.map((agent) => ( handleDeleteAgent(agent.id)} /> ))}
)}
); };