78 lines
2.7 KiB
TypeScript
78 lines
2.7 KiB
TypeScript
// import { initializeApp } from 'firebase/app'
|
|
import firebase from 'firebase/compat/app'
|
|
import type { User } from '@firebase/auth-types'
|
|
import {
|
|
initializeFirestore,
|
|
persistentLocalCache,
|
|
persistentMultipleTabManager
|
|
} from 'firebase/firestore'
|
|
import type { Firestore } from 'firebase/firestore'
|
|
import { getAuth, getRedirectResult } from 'firebase/auth'
|
|
|
|
// 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 = () => firebase.auth().signOut()
|
|
|
|
export const db = ref<Firestore>()
|
|
|
|
// Initialize Firebase
|
|
export const initializeFirebase = async () => {
|
|
const app = firebase.initializeApp(firebaseConfig)
|
|
const auth = getAuth()
|
|
try {
|
|
const authRedirectResult = await getRedirectResult(auth)
|
|
console.log(authRedirectResult)
|
|
// user.value = result
|
|
// This gives you a Google Access Token. You can use it to access Google APIs.
|
|
// const credential = GoogleAuthProvider.credentialFromResult(result)
|
|
// const token = credential.accessToken
|
|
|
|
// The signed-in user info.
|
|
// const user = result.user
|
|
// IdP data available using getAdditionalUserInfo(result)
|
|
// ...
|
|
} catch (error: any) {
|
|
console.error(error)
|
|
// const errorCode = error.code
|
|
// // const errorMessage = error.message
|
|
// const email = error.customData.email
|
|
|
|
// Handle Errors here.
|
|
// const errorCode = error.code
|
|
// const errorMessage = error.message
|
|
// The email of the user's account used.
|
|
// const email = error.customData.email
|
|
// The AuthCredential type that was used.
|
|
// const credential = GoogleAuthProvider.credentialFromError(error)
|
|
// ...
|
|
}
|
|
|
|
firebase.auth().onAuthStateChanged((firebaseUser) => {
|
|
user.value = firebaseUser
|
|
})
|
|
db.value = markRaw(
|
|
initializeFirestore(app, {
|
|
localCache: persistentLocalCache({ tabManager: persistentMultipleTabManager() })
|
|
})
|
|
)
|
|
}
|