import { ReactNode, useEffect, useState } from 'react' import { quiz } from '../data/QuizQuestions' import { QuizContextTypes, Result, ScreenTypes } from '../types' import { QuizContext, initialState } from './QuizContext' type QuizProviderProps = { children: ReactNode } const QuizProvider = ({ children }: QuizProviderProps) => { const [timer, setTimer] = useState(initialState.timer) const [endTime, setEndTime] = useState(initialState.endTime) const [quizTopic, setQuizTopic] = useState(initialState.quizTopic) const [result, setResult] = useState(initialState.result) const [currentScreen, setCurrentScreen] = useState( initialState.currentScreen ) const [questions, setQuestions] = useState(quiz[initialState.quizTopic].questions) const { questions: quizQuestions, totalQuestions, totalTime, totalScore, } = quiz[quizTopic] const selectQuizTopic = (topic: string) => { setQuizTopic(topic) } useEffect(() => { setTimer(totalTime) setQuestions(quizQuestions) }, [quizTopic]) const quizDetails = { totalQuestions, totalScore, totalTime, selectedQuizTopic: quizTopic, } const quizContextValue: QuizContextTypes = { currentScreen, setCurrentScreen, quizTopic, selectQuizTopic, questions, setQuestions, result, setResult, quizDetails, timer, setTimer, endTime, setEndTime, } return {children} } export default QuizProvider