frontPanel/src/stores/quizes/hooks.ts

25 lines
800 B
TypeScript
Raw Normal View History

2023-11-13 18:04:51 +00:00
import { Quiz } from "@model/quiz/quiz";
2023-11-14 13:10:41 +00:00
import { useNavigate, useParams } from "react-router-dom";
2023-11-13 18:04:51 +00:00
import { useQuizStore } from "./store";
2023-11-14 13:10:41 +00:00
import { useCallback } from "react";
import { updateQuizWithFnOptimistic } from "./actions";
2023-11-13 18:04:51 +00:00
export function useQuizArray(): Quiz[] {
const quizes = useQuizStore(state => state.quizById);
return Object.values(quizes).flatMap(quiz => quiz ? [quiz] : []);
}
export function useCurrentQuiz() {
2023-11-14 13:10:41 +00:00
const navigate = useNavigate();
2023-11-13 18:04:51 +00:00
const quizId = parseInt(useParams().quizId ?? "");
const quiz = useQuizStore(state => state.quizById[quizId]);
2023-11-14 13:10:41 +00:00
const updateQuiz = useCallback((updateFn: (quiz: Quiz) => void) => {
updateQuizWithFnOptimistic(quizId, updateFn, navigate);
}, [navigate, quizId]);
return { quiz, updateQuiz };
2023-11-13 18:04:51 +00:00
}