import Link from "next/link"; import { notFound, redirect } from "next/navigation"; import { getServerSession } from "next-auth"; import { authOptions } from "@/lib/auth-options"; import { getLessonContext } from "@/lib/course-queries"; import { prisma } from "@/lib/prisma"; import { CompleteLessonButton } from "@/components/complete-lesson-button"; type Props = { params: Promise<{ slug: string; lessonSlug: string }> }; export default async function LessonPage({ params }: Props) { const { slug: courseSlug, lessonSlug } = await params; const session = await getServerSession(authOptions); if (!session?.user?.id) { redirect(`/login?callbackUrl=/kurse/${courseSlug}/lektionen/${lessonSlug}`); } const ctx = await getLessonContext(courseSlug, lessonSlug); if (!ctx) notFound(); const enrollment = await prisma.enrollment.findUnique({ where: { userId_courseId: { userId: session.user.id, courseId: ctx.course.id }, }, }); if (!enrollment) { redirect(`/kurse/${ctx.course.slug}`); } const lessonIds = ctx.course.modules.flatMap((m) => m.lessons.map((l) => l.id)); const progressRows = await prisma.lessonProgress.findMany({ where: { userId: session.user.id, lessonId: { in: lessonIds } }, }); const completed = new Set( progressRows.filter((p) => p.completedAt).map((p) => p.lessonId), ); const currentDone = !!completed.has(ctx.lesson.id); return (

← {ctx.course.title}

); }