diff --git a/src/App.js b/src/App.js index 9e78de7..a460536 100644 --- a/src/App.js +++ b/src/App.js @@ -1,7 +1,7 @@ import React, { useState, useEffect, useRef, useMemo } from 'react'; import { initializeApp } from './storage'; import { getAuth, signInAnonymously, onAuthStateChanged, signInWithCustomToken } from './storage'; -import { getFirestore, doc, setDoc, addDoc, collection, onSnapshot, updateDoc, deleteDoc, query, orderBy, limit, writeBatch, getStorage } from './storage'; +import { getFirestore, doc, setDoc, addDoc, collection, onSnapshot, updateDoc, deleteDoc, query, orderBy, limit, writeBatch, getStorage, getStorageMode } from './storage'; import { PlusCircle, Users, Swords, Trash2, Eye, Edit3, Save, XCircle, ChevronsUpDown, UserCheck, UserX, HeartCrack, HeartPulse, Zap, EyeOff, ExternalLink, AlertTriangle, @@ -97,29 +97,40 @@ let db; let auth; let storage; -// Initialize Firebase -const initializeFirebase = () => { - const requiredKeys = ['apiKey', 'authDomain', 'projectId', 'appId']; - const missingKeys = requiredKeys.filter(key => !firebaseConfig[key]); +const STORAGE_MODE = getStorageMode(); - if (missingKeys.length > 0) { - console.error(`CRITICAL: Missing Firebase config values: ${missingKeys.join(', ')}`); - return false; +// Initialize storage backend. firebase mode = real SDK init. +// ws/memory mode = mock auth, no firebase. +const initializeStorage = () => { + if (STORAGE_MODE === 'firebase') { + const requiredKeys = ['apiKey', 'authDomain', 'projectId', 'appId']; + const missingKeys = requiredKeys.filter(key => !firebaseConfig[key]); + if (missingKeys.length > 0) { + console.error(`CRITICAL: Missing Firebase config values: ${missingKeys.join(', ')}`); + return false; + } + try { + app = initializeApp(firebaseConfig); + db = getFirestore(app); + auth = getAuth(app); + storage = getStorage(); + return true; + } catch (error) { + console.error("Error initializing Firebase:", error); + return false; + } } - try { - app = initializeApp(firebaseConfig); - db = getFirestore(app); - auth = getAuth(app); - storage = getStorage(); - return true; - } catch (error) { - console.error("Error initializing Firebase:", error); - return false; - } + // ws / memory mode: stub auth so App's anon-sign-in path works. + const FAKE_USER = { uid: 'local-user', isAnonymous: true }; + auth = { + currentUser: FAKE_USER, + }; + storage = getStorage(); + return true; }; -const isFirebaseInitialized = initializeFirebase(); +const isInitialized = initializeStorage(); // ============================================================================ // FIRESTORE PATH HELPERS @@ -2804,12 +2815,20 @@ function App() { } if (!auth) { - setError("Firebase Auth not initialized. Check your Firebase configuration."); + setError("Auth not initialized."); setIsLoading(false); setIsAuthReady(false); return; } + // ws/memory mode: stub auth, no SDK sign-in. Unblock UI immediately. + if (STORAGE_MODE !== 'firebase') { + setUserId(auth.currentUser?.uid || 'local-user'); + setIsAuthReady(true); + setIsLoading(false); + return; + } + const initAuth = async () => { try { const token = window.__initial_auth_token; @@ -2843,11 +2862,11 @@ function App() { return () => unsubscribe(); }, []); - if (!isFirebaseInitialized || !db || !auth) { + if (!isInitialized || !auth) { return ( ); }