Merge pull request #49 from louis-antoine-etsmtl/fix-user-join-room-bug

Fix user join room bug
This commit is contained in:
louis-antoine-etsmtl 2024-04-07 17:30:07 -04:00 committed by GitHub
commit a8702d0cc3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 18 additions and 26 deletions

View file

@ -42,24 +42,20 @@ const JoinRoom: React.FC = () => {
console.log('Successfully joined the room.'); console.log('Successfully joined the room.');
}); });
socket.on('next-question', (question: QuestionType) => { socket.on('next-question', (question: QuestionType) => {
console.log("NEXT MODE!")
setQuizMode('teacher'); setQuizMode('teacher');
setIsWaitingForTeacher(false); setIsWaitingForTeacher(false);
setQuestion(question); setQuestion(question);
}); });
socket.on('launch-student-mode', (questions: QuestionType[]) => { socket.on('launch-student-mode', (questions: QuestionType[]) => {
console.log("STODENT MODE!")
setQuizMode('student'); setQuizMode('student');
setIsWaitingForTeacher(false); setIsWaitingForTeacher(false);
setQuestions(questions); setQuestions(questions);
setQuestion(questions[0]); setQuestion(questions[0]);
}); });
socket.on('end-quiz', () => { socket.on('end-quiz', () => {
console.log("END!")
disconnect(); disconnect();
}); });
socket.on('join-failure', (message) => { socket.on('join-failure', (message) => {
console.log("BIG FAIL!")
console.log('Failed to join the room.'); console.log('Failed to join the room.');
setConnectionError(`Erreur de connexion : ${message}`); setConnectionError(`Erreur de connexion : ${message}`);
setIsConnecting(false); setIsConnecting(false);

View file

@ -83,7 +83,6 @@ const ManageRoom: React.FC = () => {
setConnectingError(''); setConnectingError('');
const socket = webSocketService.connect(ENV_VARIABLES.VITE_BACKEND_URL); const socket = webSocketService.connect(ENV_VARIABLES.VITE_BACKEND_URL);
console.log(socket);
socket.on('connect', () => { socket.on('connect', () => {
webSocketService.createRoom(); webSocketService.createRoom();
}); });
@ -98,36 +97,33 @@ const ManageRoom: React.FC = () => {
console.log('Error creating room.'); console.log('Error creating room.');
}); });
socket.on('user-joined', (user: UserType) => {
console.log("USER JOINED ! ")
console.log("quizMode: ", quizMode)
setUsers((prevUsers) => [...prevUsers, user]);
// This doesn't relaunch the quiz for users that connected late
if (quizMode === 'teacher') {
console.log("TEACHER")
webSocketService.nextQuestion(roomName, currentQuestion);
} else if (quizMode === 'student') {
console.log(quizQuestions);
webSocketService.launchStudentModeQuiz(roomName, quizQuestions);
}
});
socket.on('join-failure', (message) => { socket.on('join-failure', (message) => {
setConnectingError(message); setConnectingError(message);
setSocket(null); setSocket(null);
}); });
socket.on('user-disconnected', (userId: string) => { socket.on('user-disconnected', (userId: string) => {
setUsers((prevUsers) => prevUsers.filter((user) => user.id !== userId)); setUsers((prevUsers) => prevUsers.filter((user) => user.id !== userId));
console.log(userId);
}); });
setSocket(socket); setSocket(socket);
}; };
useEffect(() => {
// This is here to make sure the correct value is sent when user join
if (socket) {
socket.on('user-joined', (user: UserType) => {
setUsers((prevUsers) => [...prevUsers, user]);
if (quizMode === 'teacher') {
webSocketService.nextQuestion(roomName, currentQuestion);
} else if (quizMode === 'student') {
webSocketService.launchStudentModeQuiz(roomName, quizQuestions);
}
});
}
}, [currentQuestion, quizQuestions]);
const nextQuestion = () => { const nextQuestion = () => {
if (!quizQuestions || !currentQuestion || !quiz?.content) return; if (!quizQuestions || !currentQuestion || !quiz?.content) return;
@ -203,7 +199,7 @@ const ManageRoom: React.FC = () => {
const showSelectedQuestion = (questionIndex: number) => { const showSelectedQuestion = (questionIndex: number) => {
if (quiz?.content && quizQuestions) { if (quiz?.content && quizQuestions) {
setCurrentQuestion(quizQuestions[questionIndex]); setCurrentQuestion(quizQuestions[questionIndex]);
console.log(quizQuestions[questionIndex]);
if (quizMode === 'teacher') { if (quizMode === 'teacher') {
webSocketService.nextQuestion(roomName, quizQuestions[questionIndex]); webSocketService.nextQuestion(roomName, quizQuestions[questionIndex]);
} }