import type { Route } from "./+types/verify"; import { ArrowLeft, CheckCircleIcon, // LoaderIcon, // RefreshCwIcon, } from "lucide-react"; import { useEffect, useState } from "react"; import { useNavigate } from "react-router"; import { useSearchParams } from "react-router"; import OtpInput from "~/components/input-otp"; import { Alert, AlertDescription } from "~/components/ui/alert"; import { Button } from "~/components/ui/button"; import AuthLayout from "~/layout"; export function meta({}: Route.MetaArgs) { return [ { title: "Khollisé - Connexion" }, { name: "description", content: "Connectez-vous à Khollisé" }, ]; } export default function Verify() { const navigate = useNavigate(); const [searchParams] = useSearchParams() const email = searchParams.get("email"); if (!email) { // TODO: Redirect to login page return } // const [isResending, setIsResending] = useState(false); // const [resendSuccess, setResendSuccess] = useState(false); const [cooldown, setCooldown] = useState(0); const [otpError, setOtpError] = useState(null); // Countdown for the resend button useEffect(() => { if (cooldown <= 0) return; const timer = setInterval(() => { setCooldown((prev) => Math.max(0, prev - 1)); }, 1000); return () => clearInterval(timer); }, [cooldown]); // const handleResendOtp = async () => { // if (cooldown > 0) return; // setIsResending(true); // setResendSuccess(false); // try { // // Appeler l'API pour renvoyer un code OTP // const response = await fetch("/api/auth/resend-otp", { // method: "POST", // headers: { // "Content-Type": "application/json", // }, // body: JSON.stringify({ email }), // }); // const data = await response.json(); // if (!response.ok) { // throw new Error(data.error || "Échec de l'envoi du nouveau code"); // } // // Afficher le message de succès // setResendSuccess(true); // // Démarrer le cooldown (60 secondes) // setCooldown(60); // } catch (error) { // console.error("Erreur lors de la demande d'un nouveau code:", error); // setOtpError( // error instanceof Error // ? error.message // : "Échec de l'envoi du nouveau code" // ); // } finally { // setIsResending(false); // } // }; return (
Nous avons envoyé un email à {email}

Que se passe-t-il ensuite ?

  • Consultez votre email (vérifiez le dossier spam)
  • {/* TODO: Magic link Cliquez sur le lien pour vous connecter ou entrez le code à 6 chiffres */} Entrez le code à 6 chiffres que vous avez reçu

Entrez le code de vérification

{/* TODO: Resend OTP {resendSuccess && ( Un nouveau code a été envoyé à votre adresse email )} */}
{/* */}
); }