// TeacherModeQuiz.tsx import React, { useEffect, useState } from 'react'; import QuestionComponent from '../QuestionsDisplay/QuestionDisplay'; import { QuestionType } from '../../Types/QuestionType'; import DisconnectButton from 'src/components/DisconnectButton/DisconnectButton'; import { Dialog, DialogTitle, DialogContent, DialogActions, Button } from '@mui/material'; import { Question } from 'gift-pegjs'; import { AnswerSubmissionToBackendType } from 'src/services/WebsocketService'; import { AnswerType } from 'src/pages/Student/JoinRoom/JoinRoom'; // import { AnswerType } from 'src/pages/Student/JoinRoom/JoinRoom'; interface TeacherModeQuizProps { questionInfos: QuestionType; answers: AnswerSubmissionToBackendType[]; submitAnswer: (_answer: AnswerType, _idQuestion: number) => void; disconnectWebSocket: () => void; } const TeacherModeQuiz: React.FC = ({ questionInfos, answers, submitAnswer, disconnectWebSocket }) => { const [isAnswerSubmitted, setIsAnswerSubmitted] = useState(false); const [isFeedbackDialogOpen, setIsFeedbackDialogOpen] = useState(false); const [answer, setAnswer] = useState(); // arrive here the first time after waiting for next question useEffect(() => { console.log(`TeacherModeQuiz: useEffect: answers: ${JSON.stringify(answers)}`); console.log(`TeacherModeQuiz: useEffect: questionInfos.question.id: ${questionInfos.question.id} answer: ${answer}`); const oldAnswer = answers[Number(questionInfos.question.id) -1 ]?.answer; console.log(`TeacherModeQuiz: useEffect: oldAnswer: ${oldAnswer}`); setAnswer(oldAnswer); setIsFeedbackDialogOpen(false); }, [questionInfos.question, answers]); // handle showing the feedback dialog useEffect(() => { console.log(`TeacherModeQuiz: useEffect: answer: ${answer}`); setIsAnswerSubmitted(answer !== undefined); setIsFeedbackDialogOpen(answer !== undefined); }, [answer]); useEffect(() => { console.log(`TeacherModeQuiz: useEffect: isAnswerSubmitted: ${isAnswerSubmitted}`); setIsFeedbackDialogOpen(isAnswerSubmitted); }, [isAnswerSubmitted]); const handleOnSubmitAnswer = (answer: AnswerType) => { const idQuestion = Number(questionInfos.question.id) || -1; submitAnswer(answer, idQuestion); // setAnswer(answer); setIsFeedbackDialogOpen(true); }; const handleFeedbackDialogClose = () => { setIsFeedbackDialogOpen(false); setIsAnswerSubmitted(true); }; return (
Question {questionInfos.question.id}
{isAnswerSubmitted ? (
En attente pour la prochaine question...
) : ( )} Rétroaction
Question :
); }; export default TeacherModeQuiz;