@@ -24,65 +24,103 @@ export const AuthProvider = ({ children }: { children: React.ReactNode }) => {
2424 const [ loading , setLoading ] = useState ( true ) ;
2525
2626 useEffect ( ( ) => {
27- console . log ( '🔐 AuthProvider - TIMEOUT COURT de 2 secondes' ) ;
27+ console . log ( '🔐 AuthProvider - DÉMARRAGE avec timeout de 1.5 secondes' ) ;
2828
29- // TIMEOUT AGRESSIF : Si pas de réponse en 2 secondes, on force l'affichage
29+ // TIMEOUT ULTRA COURT : 1.5 secondes max
3030 const forceTimeout = setTimeout ( ( ) => {
31- console . log ( '🔐 TIMEOUT 2s atteint - FORCER l\'affichage immédiatement' ) ;
31+ console . log ( '🔐 TIMEOUT 1.5s atteint - FORCER l\'affichage immédiatement' ) ;
3232 setLoading ( false ) ;
33- } , 2000 ) ; // 2 secondes seulement !
33+ } , 1500 ) ; // 1.5 secondes seulement !
3434
3535 const unsubscribe = onAuthStateChanged ( auth , ( user ) => {
3636 console . log ( '🔐 Firebase Auth réponse reçue:' , user ? 'CONNECTÉ' : 'DÉCONNECTÉ' ) ;
37- clearTimeout ( forceTimeout ) ; // Annuler le timeout si on a une réponse
37+ clearTimeout ( forceTimeout ) ;
3838 setUser ( user ) ;
3939 setLoading ( false ) ;
4040 } , ( error ) => {
4141 console . error ( '🚨 Erreur Auth:' , error ) ;
42- clearTimeout ( forceTimeout ) ; // Annuler le timeout même en cas d'erreur
42+ clearTimeout ( forceTimeout ) ;
4343 setLoading ( false ) ;
4444 } ) ;
4545
46- // Cleanup
4746 return ( ) => {
4847 clearTimeout ( forceTimeout ) ;
4948 unsubscribe ( ) ;
5049 } ;
5150 } , [ ] ) ;
5251
5352 const signInWithEmail = async ( email : string , password : string ) => {
54- console . log ( '🔐 Tentative connexion email...' ) ;
55- try {
56- const result = await signInWithEmailAndPassword ( auth , email , password ) ;
57- console . log ( '✅ Connexion email réussie' ) ;
58- return result ;
59- } catch ( error ) {
60- console . error ( '❌ Erreur connexion email:' , error ) ;
61- throw error ;
53+ console . log ( '🔐 Tentative connexion email AVEC RETRY...' ) ;
54+
55+ // RETRY automatique en cas d'erreur réseau
56+ for ( let attempt = 1 ; attempt <= 3 ; attempt ++ ) {
57+ try {
58+ console . log ( `🔐 Tentative ${ attempt } /3...` ) ;
59+ const result = await signInWithEmailAndPassword ( auth , email , password ) ;
60+ console . log ( '✅ Connexion email réussie' ) ;
61+ return result ;
62+ } catch ( error : any ) {
63+ console . error ( `❌ Erreur tentative ${ attempt } :` , error . code , error . message ) ;
64+
65+ if ( attempt === 3 ) {
66+ // Si c'est une erreur réseau, message plus clair
67+ if ( error . code === 'auth/network-request-failed' ) {
68+ throw new Error ( 'Problème de connexion réseau. Vérifiez votre connexion internet.' ) ;
69+ }
70+ throw error ;
71+ }
72+
73+ // Attendre avant retry
74+ await new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ;
75+ }
6276 }
6377 } ;
6478
6579 const signUpWithEmail = async ( email : string , password : string ) => {
66- console . log ( '🔐 Tentative création compte...' ) ;
67- try {
68- const result = await createUserWithEmailAndPassword ( auth , email , password ) ;
69- console . log ( '✅ Création compte réussie' ) ;
70- return result ;
71- } catch ( error ) {
72- console . error ( '❌ Erreur création compte:' , error ) ;
73- throw error ;
80+ console . log ( '🔐 Tentative création compte AVEC RETRY...' ) ;
81+
82+ for ( let attempt = 1 ; attempt <= 3 ; attempt ++ ) {
83+ try {
84+ console . log ( `🔐 Création tentative ${ attempt } /3...` ) ;
85+ const result = await createUserWithEmailAndPassword ( auth , email , password ) ;
86+ console . log ( '✅ Création compte réussie' ) ;
87+ return result ;
88+ } catch ( error : any ) {
89+ console . error ( `❌ Erreur création tentative ${ attempt } :` , error . code , error . message ) ;
90+
91+ if ( attempt === 3 ) {
92+ if ( error . code === 'auth/network-request-failed' ) {
93+ throw new Error ( 'Problème de connexion réseau. Vérifiez votre connexion internet.' ) ;
94+ }
95+ throw error ;
96+ }
97+
98+ await new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ;
99+ }
74100 }
75101 } ;
76102
77103 const signInWithGoogle = async ( ) => {
78- console . log ( '🔐 Tentative connexion Google...' ) ;
79- try {
80- const result = await signInWithPopup ( auth , googleProvider ) ;
81- console . log ( '✅ Connexion Google réussie' ) ;
82- return result ;
83- } catch ( error ) {
84- console . error ( '❌ Erreur connexion Google:' , error ) ;
85- throw error ;
104+ console . log ( '🔐 Tentative connexion Google AVEC RETRY...' ) ;
105+
106+ for ( let attempt = 1 ; attempt <= 3 ; attempt ++ ) {
107+ try {
108+ console . log ( `🔐 Google tentative ${ attempt } /3...` ) ;
109+ const result = await signInWithPopup ( auth , googleProvider ) ;
110+ console . log ( '✅ Connexion Google réussie' ) ;
111+ return result ;
112+ } catch ( error : any ) {
113+ console . error ( `❌ Erreur Google tentative ${ attempt } :` , error . code , error . message ) ;
114+
115+ if ( attempt === 3 ) {
116+ if ( error . code === 'auth/network-request-failed' ) {
117+ throw new Error ( 'Problème de connexion réseau. Vérifiez votre connexion internet.' ) ;
118+ }
119+ throw error ;
120+ }
121+
122+ await new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ;
123+ }
86124 }
87125 } ;
88126
0 commit comments