"use client"; import { useState, useEffect } from "react"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { useAuth } from "@/contexts/AuthContext"; import { loginSchema, LoginFormData } from "@/lib/validations"; import { Input } from "@/components/ui/Input"; import Button from "@/components/Button"; import Link from "next/link"; import TeaIconsBackground from "@/components/TeaIconsBackground"; import { ROUTES } from "@/utils/constants"; import { GoogleLoginButton } from "@/components/GoogleLoginButton"; import { initFacebookSDK, loginWithFacebook } from "@/lib/facebook-sdk"; import toast from "react-hot-toast"; export const dynamic = 'force-dynamic'; export default function LoginPage() { const { login, facebookLogin } = useAuth(); const [isSubmitting, setIsSubmitting] = useState(false); const [isFacebookLoading, setIsFacebookLoading] = useState(false); const [isFacebookSDKLoaded, setIsFacebookSDKLoaded] = useState(false); const [showPassword, setShowPassword] = useState(false); const [animationKey] = useState(Date.now()); const hasGoogleAuth = !!process.env.NEXT_PUBLIC_GOOGLE_CLIENT_ID; const hasFacebookAuth = !!process.env.NEXT_PUBLIC_FACEBOOK_APP_ID; useEffect(() => { initFacebookSDK() .then(() => { setIsFacebookSDKLoaded(true); console.log('Facebook SDK loaded successfully'); }) .catch((error) => { console.error('Failed to load Facebook SDK:', error); }); }, []); const { register, handleSubmit, formState: { errors }, } = useForm({ resolver: zodResolver(loginSchema), }); const onSubmit = async (data: LoginFormData) => { setIsSubmitting(true); try { await login(data); } catch (error) { console.error("Login error:", error); } finally { setIsSubmitting(false); } }; const handleFacebookLogin = async () => { if (!isFacebookSDKLoaded) { toast.error("Le SDK Facebook n'est pas encore chargé. Veuillez réessayer dans quelques secondes."); return; } setIsFacebookLoading(true); try { const accessToken = await loginWithFacebook(); await facebookLogin(accessToken); } catch (error: any) { console.error("Facebook login error:", error); if (error.message !== 'Facebook login cancelled') { // Show the specific error message from Facebook SDK toast.error(error.message || "Erreur lors de la connexion avec Facebook"); } } finally { setIsFacebookLoading(false); } }; return (
{/* Title */}

Connexion

Connectez-vous pour participer au jeu-concours

{/* Main Card */}
{/* Tabs */}
Inscription
{/* Form Container */}
{/* Login Form */}
{/* Email */}
{errors.email && (

{errors.email.message}

)}
{/* Password */}
{errors.password && (

{errors.password.message}

)}
{/* Submit Button */} {/* Forgot Password */}
Mot de passe oublié ?
{/* Divider */} {(hasGoogleAuth || hasFacebookAuth) && (
Ou continuer avec
)} {/* Social Login Buttons */} {(hasGoogleAuth || hasFacebookAuth) && (
{hasGoogleAuth && ( )} {hasFacebookAuth && ( )}
)}
); }