Files
contexted-v3/src/composables/useFirebase.ts

71 lines
2.2 KiB
TypeScript

// 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<User | null>()
export const initialized = computed<boolean>(() => user.value !== undefined)
export const signOut = async () => firebaseSignOut(getAuth())
export const db = ref<Firestore>()
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() })
})
)
}