From e47ebc75a930a7c51a07f4a72896cd37bd2eef0e Mon Sep 17 00:00:00 2001 From: cmekeirl Date: Sun, 12 May 2024 14:22:31 +0200 Subject: [PATCH] useMemo bad, reworked the student and admin fetchers --- .../Courses/CourseDetailTeacher.tsx | 50 +++++++++++-------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/frontend/src/components/Courses/CourseDetailTeacher.tsx b/frontend/src/components/Courses/CourseDetailTeacher.tsx index ae14afe8..917a905c 100644 --- a/frontend/src/components/Courses/CourseDetailTeacher.tsx +++ b/frontend/src/components/Courses/CourseDetailTeacher.tsx @@ -17,7 +17,7 @@ import { Tooltip, Typography, } from "@mui/material"; -import { ChangeEvent, useCallback, useEffect, useMemo, useState } from "react"; +import { ChangeEvent, useCallback, useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { Course, @@ -142,27 +142,37 @@ export function CourseDetailTeacher(): JSX.Element { const lang = i18n.language; const navigate = useNavigate(); - useMemo(() => { - setAdminObjects([]); - const admins_and_teacher = admins.concat({uid: course.teacher}); - admins_and_teacher.forEach((admin) => { - getUser(admin.uid).then((user: Me) => { - setAdminObjects((prev) => { - return [...prev, user]; - }); - }); - }); + useEffect(() => { + const fetchAdminData = async () => { + setAdminObjects([]); + const admins_and_teacher = admins.concat({ uid: course.teacher }); + const adminObjects: Me[] = []; + + for (const admin of admins_and_teacher) { + const user = await getUser(admin.uid); + adminObjects.push(user); + } + + setAdminObjects(adminObjects); + }; + + fetchAdminData(); }, [admins, course]); - useMemo(() => { - setStudentObjects([]); - students.forEach((student) => { - getUser(student.uid).then((user: Me) => { - setStudentObjects((prev) => { - return [...prev, user]; - }); - }); - }); + useEffect(() => { + const fetchStudentData = async () => { + setStudentObjects([]); + const studentObjects: Me[] = []; + + for (const student of students) { + const user = await getUser(student.uid); + studentObjects.push(user); + } + + setStudentObjects(studentObjects); + }; + + fetchStudentData(); }, [students]); const handleCheckboxChange = (