From c16beadb3279d5799bf0cfb0b2d723df0a12dc08 Mon Sep 17 00:00:00 2001 From: admtracksteel Date: Mon, 25 May 2026 00:56:37 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20Auto-deploy:=20melhoria=20no=20s?= =?UTF-8?q?nap=20e=20medi=C3=A7=C3=A3o=20AR=20em=2025/05/2026=2000:56:37?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/MeetingRoom.tsx | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/pages/MeetingRoom.tsx b/src/pages/MeetingRoom.tsx index efca7b3..91a0211 100644 --- a/src/pages/MeetingRoom.tsx +++ b/src/pages/MeetingRoom.tsx @@ -640,6 +640,7 @@ export default function MeetingRoom() { // Estados do Lobby const [inRoom, setInRoom] = useState(false); + const [isConnecting, setIsConnecting] = useState(false); const [name, setName] = useState(''); const [cargo, setCargo] = useState(''); const [empresa, setEmpresa] = useState(''); @@ -713,7 +714,7 @@ export default function MeetingRoom() { // --- ESCUTA DO LOBBY EM TEMPO REAL --- // Conecta ao canal antes do lobby finalizar para ler assentos e avatares ocupados na sala digitada useEffect(() => { - if (!inputRoomId || inputRoomId.trim().length < 3) { + if (!inputRoomId || inputRoomId.trim().length < 3 || inRoom || isConnecting) { setPeers({}); return; } @@ -747,9 +748,11 @@ export default function MeetingRoom() { .subscribe(); return () => { + console.log(`šŸ”Œ [Lobby Watcher] Desinscrevendo escuta passiva da sala: ${roomIdUpper}`); tempChannel.unsubscribe(); + supabase.removeChannel(tempChannel); }; - }, [inputRoomId, inRoom]); + }, [inputRoomId, inRoom, isConnecting]); // Envia as atualizaƧƵes de apresentação via Broadcast para a sala inteira const handlePresentationChange = (updatedFields: Partial) => { @@ -785,6 +788,10 @@ export default function MeetingRoom() { return; } + // Ativa o estado de conexĆ£o e aguarda 120ms para a escuta do lobby se desmontar totalmente + setIsConnecting(true); + await new Promise((resolve) => setTimeout(resolve, 120)); + const finalRoomId = targetRoomId.trim().toUpperCase() || Math.random().toString(36).substring(3, 8).toUpperCase(); setRoomCode(finalRoomId); @@ -877,9 +884,11 @@ export default function MeetingRoom() { } setInRoom(true); + setIsConnecting(false); toast.success(`Entrou na sala de reuniĆ£o: ${finalRoomId}`); navigate(`/meeting/${finalRoomId}`, { replace: true }); } else if (status === 'CHANNEL_ERROR') { + setIsConnecting(false); toast.error('Erro ao conectar ao canal de reuniƵes.'); } }); @@ -905,6 +914,7 @@ export default function MeetingRoom() { await supabase.removeChannel(channelRef.current); } setInRoom(false); + setIsConnecting(false); setPeers({}); setChatMessages([]); navigate('/');