"use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; import { createClient } from "@/lib/supabase/client"; import Button from "@/components/ui/Button"; interface MarkCompleteButtonProps { moduleId: string; userId: string; isCompleted: boolean; } export default function MarkCompleteButton({ moduleId, userId, isCompleted: initialCompleted, }: MarkCompleteButtonProps) { const router = useRouter(); const [loading, setLoading] = useState(false); const [completed, setCompleted] = useState(initialCompleted); const handleToggle = async () => { setLoading(true); try { const supabase = createClient(); if (completed) { // Marquer comme non complété await (supabase .from("user_progress") .update({ completed: false, completed_at: null } as never) .eq("user_id", userId) .eq("module_id", moduleId)); } else { // Marquer comme complété (upsert) await (supabase.from("user_progress").upsert({ user_id: userId, module_id: moduleId, completed: true, completed_at: new Date().toISOString(), } as never)); } setCompleted(!completed); router.refresh(); } catch (err) { console.error("Erreur mise a jour progression:", err); } finally { setLoading(false); } }; return ( ); }