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 (
No hay pedidos en espera.