import { redirect } from "next/navigation"; import { createClient } from "@/lib/supabase/server"; import Card from "@/components/ui/Card"; import MarkCompleteButton from "./MarkCompleteButton"; import type { Module, UserProgress } from "@/types/database.types"; interface ModulePageProps { params: Promise<{ moduleId: string }>; } export default async function ModulePage({ params }: ModulePageProps) { const { moduleId } = await params; const supabase = await createClient(); const { data: { user }, } = await supabase.auth.getUser(); // Récupérer le module const { data: module } = await supabase .from("modules") .select("*") .eq("id", moduleId) .eq("is_published", true) .single() as { data: Module | null }; if (!module) { redirect("/formations"); } // Récupérer la progression pour ce module const { data: progress } = await supabase .from("user_progress") .select("*") .eq("user_id", user!.id) .eq("module_id", moduleId) .single() as { data: UserProgress | null }; return (
{/* Breadcrumb */} {/* Header */}
Semaine {module.week_number} {module.content_type && ( {module.content_type} )} {module.duration_minutes && ( {module.duration_minutes} min )} {progress?.completed && ( Complete )}

{module.title}

{module.description && (

{module.description}

)}
{/* Contenu du module */} {/* Video */} {module.content_type === "video" && module.content_url && (