// import { initializeApp } from 'firebase/app' import { Capacitor } from '@capacitor/core' // import firebase from 'firebase/compat/app' // import type { User } from '@firebase/auth-types' import { initializeApp } from 'firebase/app' import { initializeFirestore, persistentLocalCache, persistentMultipleTabManager } from 'firebase/firestore' import { getAuth, indexedDBLocalPersistence, initializeAuth, onAuthStateChanged, signOut as firebaseSignOut } from 'firebase/auth' import { type FirebaseApp } from 'firebase/app' import { type User } from '@firebase/auth' import type { Firestore } from 'firebase/firestore' // import { getAnalytics } from "firebase/analytics"; // TODO: Add SDKs for Firebase products that you want to use // https://firebase.google.com/docs/web/setup#available-libraries // Your web app's Firebase configuration // For Firebase JS SDK v7.20.0 and later, measurementId is optional const firebaseConfig = { apiKey: import.meta.env.VITE_FIREBASE_API_KEY, authDomain: import.meta.env.VITE_FIREBASE_AUTH_DOMAIN, databaseURL: import.meta.env.VITE_FIREBASE_DATABASE_URL, 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, measurementId: import.meta.env.VITE_FIREBASE_MEASUREMENT_ID } export const user = ref() export const initialized = computed(() => user.value !== undefined) export const signOut = async () => firebaseSignOut(getAuth()) export const db = ref() const getFirebaseAuth = async (app: FirebaseApp) => { if (Capacitor.isNativePlatform()) { return initializeAuth(app, { persistence: indexedDBLocalPersistence }) } else { return getAuth() } } // Initialize Firebase export const initializeFirebase = async () => { const app = initializeApp(firebaseConfig) const auth = await getFirebaseAuth(app) onAuthStateChanged(auth, (firebaseUser) => { user.value = firebaseUser }) db.value = markRaw( initializeFirestore(app, { localCache: persistentLocalCache({ tabManager: persistentMultipleTabManager() }) }) ) }