import React, { useState, useEffect } from 'react'; import { WebSocketService } from '../services/websocket'; import { ConnectionManager } from './ConnectionManager'; import { GatewayStatus } from '../types/gateway'; export const Dashboard: React.FC = () => { const [wsService, setWsService] = useState(null); const [gatewayStatus, setGatewayStatus] = useState(null); const [isConnected, setIsConnected] = useState(false); useEffect(() => { const wsUrl = import.meta.env.VITE_WS_URL || 'ws://localhost:3003'; const service = new WebSocketService(wsUrl); setWsService(service); service.connect() .then(() => { setIsConnected(true); fetchGatewayStatus(); }) .catch(error => { console.error('Failed to connect to WebSocket:', error); setIsConnected(false); }); // Fetch gateway status every 30 seconds (less frequent) const statusInterval = setInterval(fetchGatewayStatus, 30000); return () => { service.disconnect(); clearInterval(statusInterval); }; }, []); const fetchGatewayStatus = async () => { try { const apiUrl = import.meta.env.VITE_API_URL || 'http://localhost:3001'; const response = await fetch(`${apiUrl}/api/status`); if (response.ok) { const data = await response.json(); if (data.success) { setGatewayStatus(data.data); } } } catch (error) { console.error('Failed to fetch gateway status:', error); } }; const formatUptime = (seconds: number): string => { const hours = Math.floor(seconds / 3600); const minutes = Math.floor((seconds % 3600) / 60); const secs = Math.floor(seconds % 60); return `${hours}h ${minutes}m ${secs}s`; }; if (!wsService) { return (

Iniciando Manager...

); } return (

WhatsApp Gateway Manager

{isConnected ? 'Conectado' : 'Desconectado'}
{/* Connection Manager - Panel Principal */} {/* Status Info - Panel Inferior Simplificado */} {gatewayStatus && (

Estado del Sistema

Estado Gateway
{gatewayStatus.status}
Sesión
{gatewayStatus.sessionId}
Tiempo Activo
{formatUptime(gatewayStatus.uptime)}
Memoria
{(gatewayStatus.memory.heapUsed / 1024 / 1024).toFixed(2)} MB
)} {/* Quick Reference - Panel API Simplificado */}

Referencia Rápida API

Envío de Mensajes

POST /api/send
POST /api/send/bulk

Control de Sesión

POST /api/session/restart
POST /api/session/logout
POST /api/token
); };