// student-logic.js
var remoteVideo = document.getElementById('remoteVideo');
var statusMsg = document.getElementById('status-msg');

// 🚀 1. سحب هوية المدرس الحقيقية من الرابط (لحل مشكلة الشاشة السوداء واختلاف الغرف)
var urlLogicParams = new URLSearchParams(window.location.search);
var rawTid = urlLogicParams.get('tid') || window.targetTeacherId;
// تشكيل اسم الغرفة ليتطابق تماماً مع اسم غرفة المدرس
var teacherID = rawTid ? 'teacher_' + rawTid : 'roozmari-academy-room-4'; 

// 🚀 2. إجبار الموبايل (خصوصاً الآيفون) على قبول الفيديو بدون حجبه
if (remoteVideo) {
    remoteVideo.setAttribute('playsinline', ''); 
    remoteVideo.setAttribute('autoplay', '');
    remoteVideo.muted = true; // يجب أن يبدأ صامتاً لكي يسمح المتصفح بالتشغيل التلقائي
}

var peer = new Peer({
    host: '0.peerjs.com', 
    secure: true,
    port: 443,
    config: { 
        iceServers: [
            { urls: 'stun:stun.l.google.com:19302' },
            { urls: 'stun:stun1.l.google.com:19302' }
        ] 
    }
});

peer.on('open', function(id) {
    console.log('✅ الطالب متصل بشبكة الرادار، ويبحث عن غرفة المدرس: ' + teacherID);
    tryToConnect(); 
});

function tryToConnect() {
    if(statusMsg) {
        statusMsg.innerText = "جاري سحب البث والسبورة من الأستاذ...";
        statusMsg.style.display = 'block';
    }
    
    try {
        // 🚀 3. الخدعة السحرية (Dummy Stream): 
        // لمنع المتصفح من إعطاء خطأ (MediaStream) ورفض الاتصال لأن الطالب لا يفتح كاميرته
        var canvas = document.createElement('canvas');
        var dummyStream = canvas.captureStream(15); 

        // الاتصال الفعلي بغرفة المدرس باستخدام جواز المرور الوهمي
        var call = peer.call(teacherID, dummyStream); 

        if (!call) {
            if(statusMsg) statusMsg.innerText = "❌ فشل الاتصال: المدرس لم يفتح البث والسبورة بعد";
            return;
        }

        // بمجرد أن يرسل المدرس البث الخاص به
        call.on('stream', function(stream) {
            console.log("🎬 تم استلام الفيديو والسبورة بنجاح!");
            if(statusMsg) statusMsg.style.display = 'none';
            
            remoteVideo.srcObject = stream;
            remoteVideo.style.display = 'block'; 
            
            let playPromise = remoteVideo.play();
            if (playPromise !== undefined) {
                playPromise.then(_ => {
                    // التشغيل الصامت نجح، نعطي الطالب زراً أخضر واضحاً لفتح الصوت
                    if(statusMsg) {
                        statusMsg.innerHTML = '<span style="background:#22c55e; color:white; padding:10px 20px; border-radius:10px; cursor:pointer; font-weight:bold; box-shadow: 0 5px 15px rgba(0,0,0,0.3);">اضغط هنا لفتح الشاشة والصوت 🔊</span>';
                        statusMsg.style.display = 'block';
                        statusMsg.onclick = function() {
                            remoteVideo.muted = false;
                            remoteVideo.play();
                            statusMsg.style.display = 'none';
                        };
                    }
                }).catch(error => {
                    console.log("المتصفح يطلب ضغطة من المستخدم لتشغيل الفيديو");
                    if(statusMsg) {
                        statusMsg.innerHTML = '<span style="background:#22c55e; color:white; padding:10px 20px; border-radius:10px; cursor:pointer; font-weight:bold;">اضغط هنا لتشغيل البث 🔊</span>';
                        statusMsg.style.display = 'block';
                        statusMsg.onclick = function() {
                            remoteVideo.muted = false;
                            remoteVideo.play();
                            statusMsg.style.display = 'none';
                        };
                    }
                });
            }
        });

        // حماية إضافية: التقاط الأخطاء لمنع انهيار الجافاسكريبت
        call.on('error', function(err) {
            console.error("حدث خطأ في المكالمة:", err);
            if(statusMsg) statusMsg.innerText = "⚠️ انقطع الاتصال بالمدرس.";
        });

    } catch (error) {
        console.error("خطأ برمجي أثناء محاولة الاتصال:", error);
        if(statusMsg) statusMsg.innerText = "⚠️ حدث خطأ في النظام.";
    }
}

// تفعيل الصوت عند أي ضغطة على الشاشة (كخطة احتياطية شاملة)
document.body.addEventListener('click', function() {
    if(remoteVideo && remoteVideo.muted) {
        remoteVideo.muted = false;
        remoteVideo.play();
        if(statusMsg) statusMsg.style.display = 'none';
    }
}, { once: true });