import { useState, useEffect } from 'react'; import useLabStore from '../store/labStore'; import { studentLogin, getRoomClasses } from '../services/labApi'; export default function StudentLoginScreen() { const { serverUrl, roomToken, sessionToken, labInfo, setStudent } = useLabStore(); const [rollNumber, setRollNumber] = useState(''); const [className, setClassName] = useState(''); const [classes, setClasses] = useState([]); const [loadingClasses, setLoadingClasses] = useState(true); const [loading, setLoading] = useState(false); const [error, setError] = useState(''); useEffect(() => { async function fetchClasses() { try { const list = await getRoomClasses(serverUrl, roomToken); setClasses(list); if (list.length === 1) setClassName(list[0]); } catch { } finally { setLoadingClasses(false); } } fetchClasses(); }, [serverUrl, roomToken]); const handleLogin = async (e) => { e.preventDefault(); setLoading(true); setError(''); try { const student = await studentLogin(serverUrl, sessionToken, rollNumber.trim(), className); setStudent(student); } catch (err) { setError(err.message); } finally { setLoading(false); } }; return (

{labInfo?.lab_name}

{labInfo?.school_name}

Enter your details to start learning

setRollNumber(e.target.value)} className="w-full bg-white/[0.05] border border-white/[0.08] text-white rounded-xl px-4 py-3 text-sm focus:outline-none focus:ring-2 focus:ring-[var(--accent)]/40 focus:border-[var(--accent)]/40 transition-all placeholder:text-slate-600" placeholder="e.g. 42" required autoFocus />
{!loadingClasses && classes.length > 0 ? ( ) : ( setClassName(e.target.value)} className="w-full bg-white/[0.05] border border-white/[0.08] text-white rounded-xl px-4 py-3 text-sm focus:outline-none focus:ring-2 focus:ring-[var(--accent)]/40 focus:border-[var(--accent)]/40 transition-all placeholder:text-slate-600" placeholder={loadingClasses ? 'Loading classes...' : 'e.g. Grade 10 - A'} required disabled={loadingClasses} /> )}
{error && (
{error}
)}
); }