Skip to content

Commit 3e9c587

Browse files
committed
fix(academy): reset completedRef on exercise change, conditional verified badge, multi-select empty guard
1 parent 1f7a143 commit 3e9c587

File tree

3 files changed

+19
-6
lines changed

3 files changed

+19
-6
lines changed

apps/sim/app/academy/(catalog)/certificate/[certificateNumber]/page.tsx

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { cache } from 'react'
22
import { db } from '@sim/db'
33
import { academyCertificate } from '@sim/db/schema'
44
import { eq } from 'drizzle-orm'
5-
import { CheckCircle2, GraduationCap } from 'lucide-react'
5+
import { CheckCircle2, GraduationCap, XCircle } from 'lucide-react'
66
import type { Metadata } from 'next'
77
import { notFound } from 'next/navigation'
88
import type { AcademyCertificate } from '@/lib/academy/types'
@@ -77,10 +77,17 @@ export default async function CertificatePage({ params }: CertificatePageProps)
7777
</p>
7878
)}
7979

80-
<div className='flex items-center justify-center gap-2 text-[#4CAF50]'>
81-
<CheckCircle2 className='h-4 w-4' />
82-
<span className='font-[430] text-[14px]'>Verified</span>
83-
</div>
80+
{certificate.status === 'active' ? (
81+
<div className='flex items-center justify-center gap-2 text-[#4CAF50]'>
82+
<CheckCircle2 className='h-4 w-4' />
83+
<span className='font-[430] text-[14px]'>Verified</span>
84+
</div>
85+
) : (
86+
<div className='flex items-center justify-center gap-2 text-[#f44336]'>
87+
<XCircle className='h-4 w-4' />
88+
<span className='font-[430] text-[14px] capitalize'>{certificate.status}</span>
89+
</div>
90+
)}
8491
</div>
8592

8693
<div className='mt-6 divide-y divide-[#2A2A2A] rounded-[8px] border border-[#2A2A2A] bg-[#222]'>

apps/sim/app/academy/[courseSlug]/[lessonSlug]/components/lesson-quiz.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,11 @@ export function LessonQuiz({ lessonId, quizConfig, onPass }: LessonQuizProps) {
6262
})
6363
}
6464

65-
const allAnswered = quizConfig.questions.every((_, i) => answers[i] !== undefined)
65+
const allAnswered = quizConfig.questions.every((q, i) => {
66+
if (q.type === 'multi_select')
67+
return Array.isArray(answers[i]) && (answers[i] as number[]).length > 0
68+
return answers[i] !== undefined
69+
})
6670

6771
const handleSubmit = () => {
6872
const scored = scoreQuiz(quizConfig.questions, answers, quizConfig.passingScore)

apps/sim/app/academy/components/sandbox-canvas-provider.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,8 @@ export function SandboxCanvasProvider({
196196
}, [workflowId, exerciseConfig.validationRules])
197197

198198
useEffect(() => {
199+
completedRef.current = false
200+
199201
const workflowState = buildWorkflowState(
200202
exerciseConfig.initialBlocks ?? [],
201203
exerciseConfig.initialEdges ?? []

0 commit comments

Comments
 (0)