File size: 2,164 Bytes
fd4dc0d 59ec586 fd4dc0d 77d0015 fd4dc0d 77d0015 fd4dc0d 77d0015 fd4dc0d 77d0015 fd4dc0d 77d0015 fd4dc0d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | import { initializeApp } from 'firebase/app';
import { getAuth, GoogleAuthProvider, signInWithPopup, signOut } from 'firebase/auth';
import { getFirestore, doc, getDocFromServer } from 'firebase/firestore';
const firebaseConfig = {
apiKey: import.meta.env.VITE_FIREBASE_API_KEY || "dummy-api-key",
authDomain: import.meta.env.VITE_FIREBASE_AUTH_DOMAIN || "dummy-auth-domain",
projectId: import.meta.env.VITE_FIREBASE_PROJECT_ID || "dummy-project-id",
storageBucket: import.meta.env.VITE_FIREBASE_STORAGE_BUCKET || "dummy-storage-bucket",
messagingSenderId: import.meta.env.VITE_FIREBASE_MESSAGING_SENDER_ID || "dummy-sender-id",
appId: import.meta.env.VITE_FIREBASE_APP_ID || "dummy-app-id",
measurementId: import.meta.env.VITE_FIREBASE_MEASUREMENT_ID || "dummy-measurement-id"
};
// Check if Firebase config is complete to avoid "invalid-api-key" error
const isDummy = firebaseConfig.apiKey === "dummy-api-key" || !firebaseConfig.apiKey;
if (isDummy) {
console.log("Firebase is running in Local Workspace Mode (No API keys provided). Data will be saved locally.");
}
const app = initializeApp(firebaseConfig);
export const auth = getAuth(app);
export const db = getFirestore(app, import.meta.env.VITE_FIREBASE_FIRESTORE_DATABASE_ID || '(default)');
export const googleProvider = new GoogleAuthProvider();
export const signInWithGoogle = async () => {
if (isDummy) {
throw new Error("LocalMode");
}
try {
const result = await signInWithPopup(auth, googleProvider);
return result.user;
} catch (error) {
console.error("Error signing in with Google", error);
throw error;
}
};
export const logOut = async () => {
if (isDummy) return;
try {
await signOut(auth);
} catch (error) {
console.error("Error signing out", error);
throw error;
}
};
// Test connection
async function testConnection() {
if (isDummy) return;
try {
await getDocFromServer(doc(db, 'test', 'connection'));
} catch (error) {
if(error instanceof Error && error.message.includes('the client is offline')) {
console.warn("Firebase client is offline. Defaulting to local mode.");
}
}
}
testConnection();
|