Skip to content

Commit df7dcac

Browse files
committed
fix(academy): reset exerciseComplete on lesson navigation, remove unused useAcademyCertificate hook
1 parent 557ec35 commit df7dcac

File tree

2 files changed

+8
-17
lines changed

2 files changed

+8
-17
lines changed

apps/sim/app/academy/[courseSlug]/[lessonSlug]/page.tsx

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

3-
import { use, useCallback, useEffect, useMemo, useState } from 'react'
3+
import { use, useCallback, useEffect, useMemo, useRef, useState } from 'react'
44
import { ChevronLeft, ChevronRight } from 'lucide-react'
55
import Image from 'next/image'
66
import Link from 'next/link'
@@ -22,6 +22,12 @@ export default function LessonPage({ params }: LessonPageProps) {
2222
const { courseSlug, lessonSlug } = use(params)
2323
const course = getCourse(courseSlug)
2424
const [exerciseComplete, setExerciseComplete] = useState(false)
25+
// Reset completion state when the lesson changes (Next.js reuses the component across navigations).
26+
const prevLessonSlugRef = useRef(lessonSlug)
27+
if (prevLessonSlugRef.current !== lessonSlug) {
28+
prevLessonSlugRef.current = lessonSlug
29+
setExerciseComplete(false)
30+
}
2531

2632
const allLessons = useMemo<Lesson[]>(
2733
() => course?.modules.flatMap((m) => m.lessons) ?? [],

apps/sim/hooks/queries/academy.ts

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,10 @@
1-
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
1+
import { useMutation, useQueryClient } from '@tanstack/react-query'
22
import type { AcademyCertificate } from '@/lib/academy/types'
33
import { fetchJson } from '@/hooks/selectors/helpers'
44

55
export const academyKeys = {
66
all: ['academy'] as const,
77
certificates: () => [...academyKeys.all, 'certificate'] as const,
8-
certificate: (certificateNumber?: string) =>
9-
[...academyKeys.certificates(), certificateNumber ?? ''] as const,
10-
}
11-
12-
export function useAcademyCertificate(certificateNumber?: string, options?: { enabled?: boolean }) {
13-
return useQuery({
14-
queryKey: academyKeys.certificate(certificateNumber),
15-
queryFn: ({ signal }) =>
16-
fetchJson<{ certificate: AcademyCertificate }>(
17-
`/api/academy/certificates?certificateNumber=${encodeURIComponent(certificateNumber as string)}`,
18-
{ signal }
19-
).then((d) => d.certificate),
20-
enabled: (options?.enabled ?? true) && Boolean(certificateNumber),
21-
staleTime: 10 * 60 * 1000,
22-
})
238
}
249

2510
export function useIssueCertificate() {

0 commit comments

Comments
 (0)