1e2f9fc099
* Support local firestore emulation * Update readme * Update readme
27 lines
1.1 KiB
TypeScript
27 lines
1.1 KiB
TypeScript
import { getFirestore } from '@firebase/firestore'
|
|
import { initializeApp, getApps, getApp } from 'firebase/app'
|
|
import { FIREBASE_CONFIG } from '../../../common/envs/constants'
|
|
import { connectFirestoreEmulator } from 'firebase/firestore'
|
|
import { connectFunctionsEmulator, getFunctions } from 'firebase/functions'
|
|
|
|
// Initialize Firebase
|
|
export const app = getApps().length ? getApp() : initializeApp(FIREBASE_CONFIG)
|
|
export const db = getFirestore()
|
|
export const functions = getFunctions()
|
|
|
|
const EMULATORS_STARTED = 'EMULATORS_STARTED'
|
|
function startEmulators() {
|
|
// I don't like this but this is the only way to reconnect to the emulators without error, see: https://stackoverflow.com/questions/65066963/firebase-firestore-emulator-error-host-has-been-set-in-both-settings-and-usee
|
|
// @ts-ignore
|
|
if (!global[EMULATORS_STARTED]) {
|
|
// @ts-ignore
|
|
global[EMULATORS_STARTED] = true
|
|
connectFirestoreEmulator(db, 'localhost', 8080)
|
|
connectFunctionsEmulator(functions, 'localhost', 5001)
|
|
}
|
|
}
|
|
|
|
if (process.env.NEXT_PUBLIC_FIREBASE_EMULATE) {
|
|
startEmulators()
|
|
}
|