Add lesson progress tracking
- Toggle lesson completion via server action (LessonProgress table) - "Отметить как пройденный" button on lesson page, turns accent when done - Course sidebar: progress bar, checkmarks on completed lessons, X/Y counter per module - Dashboard: progress bar on each course card with completion percentage Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -47,9 +47,20 @@ export default async function CourseLayout({ children, params }: Props) {
|
||||
}
|
||||
}
|
||||
|
||||
// Fetch completed lesson IDs for this user
|
||||
const allLessonIds = course.modules.flatMap((m) => m.lessons.map((l) => l.id));
|
||||
const progressRecords = isAdmin
|
||||
? []
|
||||
: await prisma.lessonProgress.findMany({
|
||||
where: { userId: session.user.id, lessonId: { in: allLessonIds } },
|
||||
select: { lessonId: true },
|
||||
});
|
||||
|
||||
const completedLessonIds = new Set(progressRecords.map((p) => p.lessonId));
|
||||
|
||||
return (
|
||||
<div className="flex flex-1">
|
||||
<CourseSidebar course={course} />
|
||||
<CourseSidebar course={course} completedLessonIds={completedLessonIds} />
|
||||
<main className="flex-1 min-w-0 overflow-y-auto">
|
||||
{children}
|
||||
</main>
|
||||
|
||||
Reference in New Issue
Block a user