frontPanel/src/stores/quizes/hooks.ts

35 lines
1022 B
TypeScript
Raw Normal View History

2023-12-13 17:16:03 +00:00
import useSWR from "swr";
2023-11-14 13:37:20 +00:00
import { useQuizStore } from "./store";
2023-12-13 17:16:03 +00:00
import { quizApi } from "@api/quiz";
import { setQuizes } from "./actions";
import { isAxiosError } from "axios";
import { devlog } from "@frontend/kitui";
import { enqueueSnackbar } from "notistack";
2023-11-13 18:04:51 +00:00
2023-12-13 17:16:03 +00:00
export function useQuizes() {
const { isLoading, error, isValidating } = useSWR("quizes", () => quizApi.getList(), {
onSuccess: setQuizes,
onError: (error: unknown) => {
const message = isAxiosError<string>(error)
? error.response?.data ?? ""
: "";
devlog("Error getting quiz list", error);
enqueueSnackbar("Не удалось получить квизы");
},
});
const quizes = useQuizStore(state => state.quizes);
return { quizes, isLoading, error, isValidating };
}
2023-11-13 18:04:51 +00:00
export function useCurrentQuiz() {
const { quizes, editQuizId } = useQuizStore();
2023-11-13 18:04:51 +00:00
const quiz = quizes.find(q => q.backendId === editQuizId);
2023-11-14 13:10:41 +00:00
2023-11-27 23:07:24 +00:00
return quiz;
2023-11-13 18:04:51 +00:00
}