import React, { useState, useEffect, useRef } from 'react'; import { db } from '../firebase/config'; import { ref, onValue, update } from 'firebase/database'; import { useAuth } from '../context/AuthContext'; import { useNavigate } from 'react-router-dom'; import { CheckCircle, Clock, UtensilsCrossed, LogOut, ExternalLink, PlayCircle, Flame } from 'lucide-react'; export default function KitchenView() { const { logout } = useAuth(); const navigate = useNavigate(); const [orders, setOrders] = useState([]); const lastOrderCount = useRef(0); useEffect(() => { const ordersRef = ref(db, 'orders'); onValue(ordersRef, (snapshot) => { const data = snapshot.val(); if (data) { const orderList = Object.keys(data).map(k => ({ id: k, ...data[k] })) .filter(o => o.status !== 'completed') .sort((a, b) => b.timestamp - a.timestamp); // Alerta de sonido si hay nuevas órdenes if (orderList.length > lastOrderCount.current) { playNotificationSound(); } lastOrderCount.current = orderList.length; setOrders(orderList); } else { setOrders([]); } }); }, []); const playNotificationSound = () => { const audio = new Audio('https://assets.mixkit.co/active_storage/sfx/2869/2869-preview.mp3'); audio.play().catch(e => console.log("User interaction required for audio")); }; const updateStatus = async (id, status) => { await update(ref(db, `orders/${id}`), { status }); }; const handleLogout = async () => { await logout(); navigate('/login'); }; return (

KDS - Centro de Cocina

En Vivo
{orders.length === 0 ? (

Cocina Despejada

No hay pedidos en espera.

) : ( orders.map((order) => (
{order.table} {order.type === 'Llevar' && '🛍️'} {order.type === 'Delivery' && '🚀'} {Math.floor((Date.now() - order.timestamp) / 60000)} min atrás
{order.items.map((item, idx) => (
{item.qty} {item.name}
))}
{order.status !== 'preparing' ? ( ) : (
ENCENDIDO...
)}
)) )}
); }