import React, { useState, useEffect } from 'react'; import './BotaoVideoChamada.css'; import { FaVideo, FaExpand, FaCompress, FaPhoneSlash } from 'react-icons/fa'; import { JitsiMeeting } from '@jitsi/react-sdk'; import { db } from '../firebaseConfig'; import { ref, set, remove } from "firebase/database"; // MOCK PACIENTE const mockPacientes = [ { id: 1, name: 'Paciente' } ]; // DADOS DO MÉDICO const MEU_ID_MEDICO = 'medico-99'; const MEU_NOME_MEDICO = 'Dr. Rafael'; const BotaoVideoChamada = () => { const [isOpen, setIsOpen] = useState(false); const [isFullScreen, setIsFullScreen] = useState(false); const [callActive, setCallActive] = useState(false); const [callingPatient, setCallingPatient] = useState(null); const [roomName, setRoomName] = useState(''); // UseEffect da tecla "Esc" useEffect(() => { const handleEscKey = (event) => { if (event.key === 'Escape' && isFullScreen) { setIsFullScreen(false); } }; document.addEventListener('keydown', handleEscKey); return () => document.removeEventListener('keydown', handleEscKey); }, [isFullScreen]); // Função para INICIAR a chamada const handleStartCall = (paciente) => { // Adiciona o #config para pular o lobby const newRoomName = `mediconnect-call-${MEU_ID_MEDICO}-${paciente.id}-${Date.now()}#config.prejoinPageEnabled=false`; const callRef = ref(db, `calls/paciente-${paciente.id}`); set(callRef, { incomingCall: { fromId: MEU_ID_MEDICO, fromName: MEU_NOME_MEDICO, roomName: newRoomName } }); setRoomName(newRoomName); setCallingPatient(paciente); setCallActive(true); }; // Função para ENCERRAR a chamada const handleHangUp = () => { if (callingPatient) { const callRef = ref(db, `calls/paciente-${callingPatient.id}`); remove(callRef); } setCallActive(false); setCallingPatient(null); setRoomName(''); console.log("Chamada encerrada."); }; // Função para fechar a janela const toggleVideoChat = () => { setIsOpen(!isOpen); if (isOpen) { handleHangUp(); setIsFullScreen(false); } }; // Função de Tela Cheia const handleFullScreen = () => { setIsFullScreen(!isFullScreen); }; return (
{isOpen && (

{callActive ? `Em chamada com...` : 'Iniciar Chamada'}

{/* ================================== */} {/* BOTÕES DE VOLTA - CORREÇÃO AQUI */} {/* ================================== */}
{callActive ? ( // TELA DE CHAMADA ATIVA (JITSI)
{ iframe.style.height = '100%'; }} onApiReady={(api) => { api.on('videoConferenceLeft', handleHangUp); }} />
) : ( // TELA DE LISTA DE PACIENTES

Selecione um paciente para iniciar a chamada:

    {mockPacientes.map((paciente) => (
  • {paciente.name}
  • ))}
)}
)} {/* Botão flutuante */}
); }; export default BotaoVideoChamada;