diff --git a/src/components/verilogIDE/Practice.tsx b/src/components/verilogIDE/Practice.tsx index af1ac52..c0e2a5d 100644 --- a/src/components/verilogIDE/Practice.tsx +++ b/src/components/verilogIDE/Practice.tsx @@ -216,7 +216,7 @@ export default function Practice({ question, id_quiz, initialCode, onChangeCode,
- +
([]); + const [isSidebarOpen, setIsSidebarOpen] = useState(false); + const [activeQuestionId, setActiveQuestionId] = useState(null); + useEffect(() => { if (!nome) return; const originalTitle = document.title; @@ -79,6 +86,12 @@ export default function QuizTries() { const questionObjects = await fetchQuestion(questionIds); setQuestions(questionObjects); + if (questionIds.length > 0 && quizId) { + const promises = questionIds.map((id: string) => fetchPostsByQuestion(id, quizId)); + const postsForAllQuestions = await Promise.all(promises); + setPosts(postsForAllQuestions.flat()); + } + const mcQuestionIds = questionObjects .filter((q) => q.type === 1) .map((q) => q.id); @@ -141,6 +154,15 @@ export default function QuizTries() { startQuiz(); }, [quizId]); + const handleOpenDiscussion = (questionId: string) => { + setActiveQuestionId(questionId); + setIsSidebarOpen(true); + }; + + const handlePostCreated = (newPost: Post) => { + setPosts(prev => [newPost, ...(prev ?? [])]); + }; + const renderQuestions = (questions: Question[]) => { return questions.map((question) => { const resultData = UserQuizQuestion?.find( @@ -167,6 +189,18 @@ export default function QuizTries() {

{getTitle(question.type)}

+ +
+
{question.type === 0 && ( @@ -259,22 +293,39 @@ export default function QuizTries() {
-
-

{nome}

-
- +
+
+

{nome}

+
+ +
-
-
-
+
+ {/* Coluna Principal: Conteúdo do Quiz */} +
+

Sua pontuação: {score}/{quizMaxScore}

{Questions && renderQuestions(Questions)}
-
+ + {/* Coluna Lateral: Fórum (renderizada condicionalmente) */} + {isSidebarOpen && ( +
+ setIsSidebarOpen(false)} + quizId={quizId!} + /> +
+ )} + +