Skip to content

Commit 557ec35

Browse files
committed
fix(academy): replace useEffect+setState with lazy useState initializer in CourseProgress
1 parent 45f04d7 commit 557ec35

File tree

1 file changed

+5
-9
lines changed

1 file changed

+5
-9
lines changed

apps/sim/app/academy/(catalog)/[courseSlug]/components/course-progress.tsx

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use client'
22

3-
import { useEffect, useState } from 'react'
3+
import { useState } from 'react'
44
import { CheckCircle2, Circle, ExternalLink, GraduationCap, Loader2 } from 'lucide-react'
55
import Link from 'next/link'
66
import { getCompletedLessons } from '@/lib/academy/local-progress'
@@ -14,17 +14,13 @@ interface CourseProgressProps {
1414
}
1515

1616
export function CourseProgress({ course, courseSlug }: CourseProgressProps) {
17-
const [completedIds, setCompletedIds] = useState<Set<string> | null>(null)
17+
const [completedIds] = useState<Set<string>>(getCompletedLessons)
1818
const { data: session } = useSession()
1919
const { mutate: issueCertificate, isPending, data: certificate, error } = useIssueCertificate()
2020

21-
useEffect(() => {
22-
setCompletedIds(getCompletedLessons())
23-
}, [])
24-
2521
const allLessons = course.modules.flatMap((m) => m.lessons)
2622
const totalLessons = allLessons.length
27-
const completedCount = completedIds ? allLessons.filter((l) => completedIds.has(l.id)).length : 0
23+
const completedCount = allLessons.filter((l) => completedIds.has(l.id)).length
2824
const percentComplete = totalLessons > 0 ? Math.round((completedCount / totalLessons) * 100) : 0
2925

3026
return (
@@ -64,7 +60,7 @@ export function CourseProgress({ course, courseSlug }: CourseProgressProps) {
6460
href={`/academy/${courseSlug}/${lesson.slug}`}
6561
className='flex items-center gap-3 rounded-[8px] border border-[#2A2A2A] bg-[#222] px-4 py-3 text-[14px] transition-colors hover:border-[#3A3A3A] hover:bg-[#272727]'
6662
>
67-
{completedIds?.has(lesson.id) ? (
63+
{completedIds.has(lesson.id) ? (
6864
<CheckCircle2 className='h-4 w-4 flex-shrink-0 text-[#4CAF50]' />
6965
) : (
7066
<Circle className='h-4 w-4 flex-shrink-0 text-[#444]' />
@@ -84,7 +80,7 @@ export function CourseProgress({ course, courseSlug }: CourseProgressProps) {
8480
</div>
8581
</section>
8682

87-
{completedIds && totalLessons > 0 && completedCount === totalLessons && (
83+
{totalLessons > 0 && completedCount === totalLessons && (
8884
<section className='px-4 pb-16 sm:px-8 md:px-[80px]'>
8985
<div className='mx-auto max-w-3xl rounded-[8px] border border-[#3A4A3A] bg-[#1F2A1F] p-6'>
9086
{certificate ? (

0 commit comments

Comments
 (0)