"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 { Card } from "@/components/ui/Card"; import Link from "next/link"; import { ROUTES } from "@/utils/constants"; import { useGoogleLogin } from "@react-oauth/google"; import { initFacebookSDK, loginWithFacebook } from "@/lib/facebook-sdk"; import toast from "react-hot-toast"; export default function LoginPage() { const { login, googleLogin, facebookLogin } = useAuth(); const [isSubmitting, setIsSubmitting] = useState(false); const [isGoogleLoading, setIsGoogleLoading] = useState(false); const [isFacebookLoading, setIsFacebookLoading] = useState(false); const [isFacebookSDKLoaded, setIsFacebookSDKLoaded] = useState(false); const hasGoogleAuth = !!process.env.NEXT_PUBLIC_GOOGLE_CLIENT_ID; const hasFacebookAuth = !!process.env.NEXT_PUBLIC_FACEBOOK_APP_ID; useEffect(() => { // Initialiser le SDK Facebook au chargement de la page 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 googleLoginHandler = useGoogleLogin({ onSuccess: async (tokenResponse) => { setIsGoogleLoading(true); console.log('🔑 Token Google reçu:', tokenResponse); try { await googleLogin(tokenResponse.access_token); } catch (error) { console.error("Google login error:", error); } finally { setIsGoogleLoading(false); } }, onError: (error) => { console.error("Google login failed:", error); setIsGoogleLoading(false); }, flow: 'implicit', scope: 'openid email profile', }); const handleGoogleLogin = () => { if (!hasGoogleAuth) { toast.error("La connexion Google n'est pas configurée"); return; } googleLoginHandler(); }; 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') { toast.error("Erreur lors de la connexion avec Facebook"); } } finally { setIsFacebookLoading(false); } }; return (

Connexion

Connectez-vous pour participer au jeu-concours

Mot de passe oublié ?
{(hasGoogleAuth || hasFacebookAuth) && (
Ou continuer avec
{hasGoogleAuth && ( )} {hasFacebookAuth && ( )}
)}

Vous n'avez pas de compte ?{" "} Créer un compte

); }