frontPanel/src/pages/QuizAnswersPage/useGetData.ts

62 lines
1.6 KiB
TypeScript
Raw Normal View History

import { useEffect } from "react";
import { useQuizStore } from "@root/quizes/store";
import { quizApi } from "@api/quiz";
import { setQuizes } from "@root/quizes/actions";
import { questionApi } from "@api/question";
import { setQuestions } from "@root/questions/actions";
import { resultApi } from "@api/result";
import { parseFilters } from "./helper";
import { setResults } from "@root/results/actions";
export const useGetData = (filterNew: string, filterDate: string): void => {
const { editQuizId } = useQuizStore();
useEffect(() => {
const getData = async (): Promise<void> => {
2024-05-13 13:24:41 +00:00
if (editQuizId !== null) {
const [quizes, quizesError] = await quizApi.getList();
if (quizesError) {
console.error(
"An error occurred while receiving data: ",
quizesError,
);
2024-05-13 13:24:41 +00:00
return;
}
setQuizes(quizes);
const [questions, questionsError] = await questionApi.getList({
quiz_id: editQuizId,
});
if (questionsError) {
return console.error(questionsError);
}
setQuestions(questions);
2024-05-15 11:44:10 +00:00
const [result, resultError] = await resultApi.getList(
2024-05-13 13:24:41 +00:00
editQuizId,
0,
parseFilters(filterNew, filterDate),
);
2024-05-15 11:44:10 +00:00
if (resultError || !result) {
console.error(resultError);
return;
}
2024-05-13 13:24:41 +00:00
if (result.total_count === 0) {
console.error("No results found");
}
2024-05-13 13:24:41 +00:00
setResults(result);
}
};
getData();
}, [editQuizId, filterNew, filterDate, setResults]);
};