import { initializeApp, getApps } from 'firebase/app'; import { getAuth, GoogleAuthProvider, setPersistence, browserLocalPersistence } from 'firebase/auth'; import { getFirestore, connectFirestoreEmulator } from 'firebase/firestore'; const firebaseConfig = { apiKey: import.meta.env.VITE_FIREBASE_API_KEY, authDomain: import.meta.env.VITE_FIREBASE_AUTH_DOMAIN, projectId: import.meta.env.VITE_FIREBASE_PROJECT_ID, storageBucket: import.meta.env.VITE_FIREBASE_STORAGE_BUCKET, messagingSenderId: import.meta.env.VITE_FIREBASE_MESSAGING_SENDER_ID, appId: import.meta.env.VITE_FIREBASE_APP_ID, }; export const isFirebaseConfigured = Boolean( firebaseConfig.apiKey && firebaseConfig.authDomain && firebaseConfig.projectId && firebaseConfig.apiKey !== 'undefined' && firebaseConfig.authDomain !== 'undefined' && firebaseConfig.projectId !== 'undefined' ); let app; let auth; let db; let googleProvider; if (isFirebaseConfigured) { app = getApps().length === 0 ? initializeApp(firebaseConfig) : getApps()[0]; auth = getAuth(app); setPersistence(auth, browserLocalPersistence); db = getFirestore(app); googleProvider = new GoogleAuthProvider(); // Connect to emulator in development const isLocalhost = typeof window !== 'undefined' && (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1'); if (isLocalhost && !db._settings?.host?.includes('localhost')) { try { connectFirestoreEmulator(db, 'localhost', 5003); console.log('🔥 Connected to Firestore emulator on localhost:5003'); } catch (error) { console.log('⚠️ Firestore emulator already connected or connection failed'); } } console.log('🔥 Firebase initialized successfully'); } else { auth = null; db = null; googleProvider = null; console.log('⚠️ Firebase not configured - missing environment variables'); } export { auth, db, googleProvider };