import React, { useState, useEffect } from 'react';
import { useAuth } from './hooks.tsx';
import { useNavigate } from 'react-router';
import { Role, ClassStatus } from './components/Classroom/useClassroom.ts';
import { TeacherView } from './components/Classroom/TeacherView.tsx';
import { StudentView } from './components/Classroom/StudentView.tsx';
import { ClassroomLayout } from './components/Classroom/ClassroomLayout.tsx';
import { AuthLayout } from './components/Classroom/AuthLayout.tsx';
import { ClassroomProvider, useClassroomContext } from "./components/Classroom/ClassroomProvider.tsx";
import { ToastContainer } from 'react-toastify';
const RoleSelection = () => {
const { setRole } = useClassroomContext();
return (
请选择您的角色
);
};
const JoinClassSection = () => {
const { joinClass } = useClassroomContext();
const [classId, setClassId] = useState('');
const handleJoinClass = async () => {
if (!classId.trim()) return;
await joinClass(classId);
};
return (
);
};
const CreateClassSection = () => {
const { classStatus, createClass, className, setClassName, role } = useClassroomContext();
const navigate = useNavigate();
const handleCreateClass = async () => {
if (!className.trim()) return;
const classId = await createClass(className);
if (classId) {
navigate(`/mobile/classroom/${classId}/${role === Role.Teacher ? 'teacher' : 'student'}`, { replace: true });
}
};
if (classStatus !== ClassStatus.NOT_STARTED) return null;
return (
);
};
const Classroom = () => {
const context = useClassroomContext();
const { role, classStatus, isLoggedIn, login } = context;
const { user, isAuthenticated } = useAuth();
useEffect(() => {
if (isAuthenticated && user && !isLoggedIn) {
login(user.id.toString());
}
}, [isAuthenticated, user, isLoggedIn]);
if (!role) {
return (
);
}
if (!isLoggedIn) {
return (
);
}
if (role === Role.Teacher && !context.isJoinedClass) {
return (
<>
>
);
}
if (role === Role.Student && !context.isJoinedClass) {
return (
<>
>
);
}
if (classStatus === ClassStatus.ENDED) {
return (
);
}
return (
{role === Role.Teacher ? : }
);
};
export const ClassroomPage = () => {
return (
<>
>
)
}