From 1a17a6d40c0ac2f7d561a49cfb498834d5df5605 Mon Sep 17 00:00:00 2001 From: Ashutosh Tripathi Date: Tue, 27 Aug 2024 21:59:41 +0530 Subject: [PATCH] add index for answers --- components/quiz.tsx | 49 +++++++++---------- .../03-snowman-consensus.mdx | 2 +- utils/indexedDB.ts | 2 +- 3 files changed, 26 insertions(+), 27 deletions(-) diff --git a/components/quiz.tsx b/components/quiz.tsx index 1a783625..c92d7d0f 100644 --- a/components/quiz.tsx +++ b/components/quiz.tsx @@ -4,13 +4,13 @@ import { v4 as uuidv4 } from 'uuid'; import { saveQuizResponse, getQuizResponse, resetQuizResponse } from '@/utils/indexedDB'; import Image from 'next/image'; import { cn } from '@/utils/cn'; -import { buttonVariants } from '@/components/ui/button' +import { buttonVariants } from '@/components/ui/button'; interface QuizProps { quizId: string; question: string; options: string[]; - correctAnswers: string[]; + correctAnswers: number[]; // Changed to number[] to represent indices hint: string; explanation: string; } @@ -19,11 +19,11 @@ const Quiz: React.FC = ({ quizId, question, options, - correctAnswers = [], // Provide a default empty array + correctAnswers = [], hint, explanation }) => { - const [selectedAnswers, setSelectedAnswers] = useState([]); + const [selectedAnswers, setSelectedAnswers] = useState([]); // Changed to number[] const [isAnswerChecked, setIsAnswerChecked] = useState(false); const [isCorrect, setIsCorrect] = useState(false); const [isClient, setIsClient] = useState(false); @@ -52,15 +52,15 @@ const Quiz: React.FC = ({ setIsCorrect(false); }; - const handleAnswerSelect = (answer: string) => { + const handleAnswerSelect = (index: number) => { if (!isAnswerChecked) { if (isSingleAnswer) { - setSelectedAnswers([answer]); + setSelectedAnswers([index]); } else { setSelectedAnswers(prev => - prev.includes(answer) - ? prev.filter(a => a !== answer) - : [...prev, answer] + prev.includes(index) + ? prev.filter(a => a !== index) + : [...prev, index] ); } } @@ -123,8 +123,7 @@ const Quiz: React.FC = ({ return
Loading...
; } - // If correctAnswers is undefined or empty, render an error message - if (!correctAnswers || correctAnswers.length === 0) { + if (correctAnswers.length === 0) { return (

Error: No correct answers provided for this quiz.

@@ -161,31 +160,31 @@ const Quiz: React.FC = ({ key={uuidv4()} className={`flex items-center p-3 rounded-lg border transition-colors cursor-pointer ${ isAnswerChecked - ? selectedAnswers.includes(option) - ? correctAnswers.includes(option) + ? selectedAnswers.includes(index) + ? correctAnswers.includes(index) ? 'border-avax-green bg-green-50 dark:bg-green-900/30 dark:border-green-700' : 'border-avax-red bg-red-50 dark:bg-red-900/30 dark:border-red-700' : 'border-gray-200 bg-white dark:border-gray-700 dark:bg-black' - : selectedAnswers.includes(option) + : selectedAnswers.includes(index) ? 'border-[#3752ac] bg-[#3752ac] bg-opacity-10 dark:bg-opacity-30' : 'border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-900' }`} - onClick={() => handleAnswerSelect(option)} + onClick={() => handleAnswerSelect(index)} > {isSingleAnswer - ? String.fromCharCode(65 + index) // A, B, C, D for single answer - : (selectedAnswers.includes(option) ? '✓' : '')} + ? String.fromCharCode(65 + index) + : (selectedAnswers.includes(index) ? '✓' : '')} {option}
@@ -196,11 +195,11 @@ const Quiz: React.FC = ({
{!isAnswerChecked ? ( @@ -208,7 +207,7 @@ const Quiz: React.FC = ({ !isCorrect && (