VIBN Frontend for Coolify deployment
This commit is contained in:
36
lib/firebase/config.ts
Normal file
36
lib/firebase/config.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import { initializeApp, getApps, FirebaseApp } from 'firebase/app';
|
||||
import { getAuth, Auth } from 'firebase/auth';
|
||||
import { getFirestore, Firestore } from 'firebase/firestore';
|
||||
import { getStorage, FirebaseStorage } from 'firebase/storage';
|
||||
|
||||
const firebaseConfig = {
|
||||
apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY,
|
||||
authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN,
|
||||
projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID,
|
||||
storageBucket: process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET,
|
||||
messagingSenderId: process.env.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID,
|
||||
appId: process.env.NEXT_PUBLIC_FIREBASE_APP_ID,
|
||||
measurementId: process.env.NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID,
|
||||
};
|
||||
|
||||
// Only initialize if we have the API key (skip during build)
|
||||
let _app: FirebaseApp | undefined;
|
||||
let _auth: Auth | undefined;
|
||||
let _db: Firestore | undefined;
|
||||
let _storage: FirebaseStorage | undefined;
|
||||
|
||||
if (typeof window !== 'undefined' || firebaseConfig.apiKey) {
|
||||
// Initialize Firebase (client-side only, safe for browser)
|
||||
_app = getApps().length === 0 ? initializeApp(firebaseConfig) : getApps()[0];
|
||||
_auth = getAuth(_app);
|
||||
_db = getFirestore(_app);
|
||||
_storage = getStorage(_app);
|
||||
}
|
||||
|
||||
// Export with type assertions - these will be defined at runtime in the browser
|
||||
// During build, they may be undefined, but won't be accessed
|
||||
export const auth = _auth as Auth;
|
||||
export const db = _db as Firestore;
|
||||
export const storage = _storage as FirebaseStorage;
|
||||
export default _app;
|
||||
|
||||
Reference in New Issue
Block a user