complete capacitor firebase integration

This commit is contained in:
2023-06-06 20:19:50 +02:00
parent 53b364e798
commit dc8dcb1867
4 changed files with 46 additions and 11 deletions

View File

@@ -11,7 +11,6 @@ import {
import { initializeSettings } from '@/composables/useSettings'
import { windowIsMobile } from '@/utils/helpers'
import SideBar from '@/components/SideBar.vue'
// import firebase from 'firebase/compat/app'
import { useWindowSize } from '@vueuse/core'
initializeSettings()

View File

@@ -1,4 +1,5 @@
<script setup lang="ts">
import { firebaseAuth } from '@/composables/useFirebase'
import firebase from 'firebase/compat/app'
import 'firebase/compat/auth'
import 'firebaseui/dist/firebaseui.css'
@@ -16,8 +17,7 @@ const emit = defineEmits<{
// const ui: any = inject('firebaseAuthUI')
const firebaseAuthUI =
firebaseui.auth.AuthUI.getInstance() || new firebaseui.auth.AuthUI(firebase.auth())
firebaseui.auth.AuthUI.getInstance() || new firebaseui.auth.AuthUI(firebaseAuth)
const uiConfig = {
signInOptions: [

View File

@@ -1,4 +1,5 @@
<script setup lang="ts">
import { sendEmailVerification } from 'firebase/auth'
import { user } from '@/composables/useFirebase'
import { encryptionKey, enableEncryption, disableEncryption } from '@/composables/useEncryption'
import { notes } from '@/composables/useNotes'
@@ -9,7 +10,7 @@ import FileSaver from 'file-saver'
const verificationEmailSent = ref(false)
const sendVerificationMail = () => {
if (!user.value) throw Error("User doesn't exist, can't send verification email")
user.value.sendEmailVerification()
sendEmailVerification(user.value)
verificationEmailSent.value = true
}

View File

@@ -1,11 +1,23 @@
// import { initializeApp } from 'firebase/app'
import firebase from 'firebase/compat/app'
import type { User } from '@firebase/auth-types'
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, type Auth } from '@firebase/auth'
import type { Firestore } from 'firebase/firestore'
// import { getAnalytics } from "firebase/analytics";
@@ -25,22 +37,45 @@ const firebaseConfig = {
measurementId: import.meta.env.VITE_FIREBASE_MEASUREMENT_ID
}
export let firebaseApp: FirebaseApp
export let firebaseAuth: Auth
export const user = ref<User | null>()
export const initialized = computed<boolean>(() => user.value !== undefined)
export const signOut = () => firebase.auth().signOut()
export const signOut = async () => firebaseSignOut(firebaseAuth)
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 = () => {
const app = firebase.initializeApp(firebaseConfig)
firebase.auth().onAuthStateChanged((firebaseUser) => {
export const initializeFirebase = async () => {
firebaseApp = initializeApp(firebaseConfig)
// const auth = initializeAuth(app)
// onAuthStateChanged(auth, (firebaseUser) => {
// // console.log(firebaseUser)
// user.value = firebaseUser
// })
firebaseAuth = await getFirebaseAuth(firebaseApp)
onAuthStateChanged(firebaseAuth, (firebaseUser) => {
user.value = firebaseUser
})
// firebase.auth().onAuthStateChanged((firebaseUser) => {
// user.value = firebaseUser
// })
db.value = markRaw(
initializeFirestore(app, {
initializeFirestore(firebaseApp, {
localCache: persistentLocalCache({ tabManager: persistentMultipleTabManager() })
})
)