71 lines
2.2 KiB
TypeScript
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() })
|
|
})
|
|
)
|
|
}
|