2023-11-13 18:04:51 +00:00
|
|
|
import { Quiz } from "@model/quiz/quiz";
|
2023-11-14 13:10:41 +00:00
|
|
|
import { useCallback } from "react";
|
|
|
|
|
import { updateQuizWithFnOptimistic } from "./actions";
|
2023-11-14 13:37:20 +00:00
|
|
|
import { useQuizStore } from "./store";
|
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:37:20 +00:00
|
|
|
const quizId = useQuizStore(state => state.editQuizId);
|
|
|
|
|
const quiz = useQuizStore(state => state.quizById[quizId ?? -1]);
|
2023-11-13 18:04:51 +00:00
|
|
|
|
2023-11-14 13:10:41 +00:00
|
|
|
const updateQuiz = useCallback((updateFn: (quiz: Quiz) => void) => {
|
2023-11-14 13:37:20 +00:00
|
|
|
updateQuizWithFnOptimistic(quizId, updateFn);
|
|
|
|
|
}, [quizId]);
|
2023-11-14 13:10:41 +00:00
|
|
|
|
|
|
|
|
return { quiz, updateQuiz };
|
2023-11-13 18:04:51 +00:00
|
|
|
}
|