diff --git a/frontend/src/views/classes/SingleClass.vue b/frontend/src/views/classes/SingleClass.vue index ea413282..0e165fa3 100644 --- a/frontend/src/views/classes/SingleClass.vue +++ b/frontend/src/views/classes/SingleClass.vue @@ -4,27 +4,28 @@ import { onMounted, ref } from "vue"; import type { ClassDTO } from "@dwengo-1/common/interfaces/class"; import { useRoute } from "vue-router"; - import { ClassController, type ClassResponse } from "@/controllers/classes"; + import { type ClassResponse } from "@/controllers/classes"; import type { JoinRequestsResponse, StudentsResponse } from "@/controllers/students"; import type { StudentDTO } from "@dwengo-1/common/interfaces/student"; import UsingQueryResult from "@/components/UsingQueryResult.vue"; import { useTeacherJoinRequestsQuery, useUpdateJoinRequestMutation } from "@/queries/teachers"; import type { ClassJoinRequestDTO } from "@dwengo-1/common/interfaces/class-join-request"; + import { useClassQuery, useClassStudentsQuery } from "@/queries/classes"; const { t } = useI18n(); // Username of logged in teacher const username = ref(undefined); - const classController: ClassController = new ClassController(); // Find class id from route const route = useRoute(); const classId: string = route.params.id as string; - const isLoading = ref(true); const currentClass = ref(undefined); const students = ref([]); + const getClass = useClassQuery(classId); + const getStudents = useClassStudentsQuery(classId); const joinRequestsQuery = useTeacherJoinRequestsQuery(username, classId); const { mutate } = useUpdateJoinRequestMutation(); @@ -33,17 +34,6 @@ onMounted(async () => { const userObject = await authState.loadUser(); username.value = userObject?.profile?.preferred_username ?? undefined; - - // Get class of which information should be shown - const classResponse: ClassResponse = await classController.getById(classId); - if (classResponse && classResponse.class) { - currentClass.value = classResponse.class; - isLoading.value = false; - } - - // Fetch all students of the class - const studentsResponse: StudentsResponse = await classController.getStudents(classId); - if (studentsResponse && studentsResponse.students) students.value = studentsResponse.students as StudentDTO[]; }); // TODO: Boolean that handles visibility for dialogs @@ -59,15 +49,10 @@ // Remove student from class async function removeStudentFromclass(): Promise { // TODO: replace by query - if (selectedStudent.value) await classController.deleteStudent(classId, selectedStudent.value.username); - dialog.value = false; - - selectedStudent.value = null; - //TODO when query; reload table so student not longer in table } // TODO: query + relaoding - function handleJoinRequest(c: ClassJoinRequestDTO, accepted: boolean) : void { + function handleJoinRequest(c: ClassJoinRequestDTO, accepted: boolean): void { mutate( { teacherUsername: username.value!, @@ -80,8 +65,7 @@ showSnackbar(t("sent"), "success"); }, onError: (e) => { - // ShowSnackbar(t("failed") + ": " + e.message, "error"); - throw e; + showSnackbar(t("failed") + ": " + e.message, "error"); }, }, ); @@ -100,132 +84,132 @@