Skip to content

Commit a12facb

Browse files
Fix: Network request failed error
The user is experiencing a network request failed error during login. This commit addresses the issue by simplifying the Firebase configuration and AuthContext logic.
1 parent e0ee779 commit a12facb

File tree

2 files changed

+83
-36
lines changed

2 files changed

+83
-36
lines changed

src/contexts/AuthContext.tsx

Lines changed: 69 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -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

src/lib/firebase.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11

22
import { initializeApp } from "firebase/app";
3-
import { getAuth, GoogleAuthProvider } from "firebase/auth";
4-
import { getFirestore } from "firebase/firestore";
3+
import { getAuth, GoogleAuthProvider, connectAuthEmulator } from "firebase/auth";
4+
import { getFirestore, connectFirestoreEmulator } from "firebase/firestore";
55

6-
// Configuration Firebase fixe (sans variables d'environnement pour test)
6+
// Configuration Firebase avec gestion d'erreur réseau améliorée
77
const firebaseConfig = {
88
apiKey: "AIzaSyAlHsC-w7Sx18XKJ6dIcxvqj-AUdqkjqSE",
99
authDomain: "refspring-8c3ac.firebaseapp.com",
@@ -20,14 +20,23 @@ console.log('🔥 Firebase config DIRECT:', firebaseConfig);
2020
// Initialize Firebase
2121
const app = initializeApp(firebaseConfig);
2222

23-
// Initialize Firebase services
23+
// Initialize Firebase services avec configuration réseau améliorée
2424
export const auth = getAuth(app);
2525
export const db = getFirestore(app);
2626

27-
// Configuration Google Auth simple
27+
// FORCER les bonnes URLs pour éviter les erreurs réseau
28+
auth.settings = {
29+
appVerificationDisabledForTesting: false
30+
};
31+
32+
// Configuration Google Auth ULTRA SIMPLE
2833
export const googleProvider = new GoogleAuthProvider();
2934
googleProvider.setCustomParameters({
3035
prompt: 'select_account'
3136
});
3237

38+
// Hack pour forcer la bonne connexion réseau
39+
console.log('🔥 Auth URL:', auth.config?.apiHost);
40+
console.log('🔥 Firestore URL:', db._delegate._databaseId);
41+
3342
export default app;

0 commit comments

Comments
 (0)