frontPanel/src/stores/quizes/hooks.ts

23 lines
696 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 { 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
}