Skip to content

Commit 54d374a

Browse files
committed
refactor(nuxt): wip
1 parent 0403180 commit 54d374a

File tree

3 files changed

+73
-38
lines changed

3 files changed

+73
-38
lines changed

packages/nuxt/src/module.ts

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -69,18 +69,16 @@ const VueFire: NuxtModule<VueFireNuxtModuleOptions> =
6969
nuxt.options.build.transpile.push(runtimeDir)
7070

7171
nuxt.hook('modules:done', () => {
72-
addPlugin(resolve(runtimeDir, 'plugin'))
73-
})
72+
// addPlugin(resolve(runtimeDir, 'plugin'))
7473

75-
// const p = normalize(resolve(templatesDir, 'plugin.js'))
76-
// console.log('[VueFire]: adding', p)
77-
// addPluginTemplate({
78-
// src: normalize(resolve(templatesDir, 'plugin.js')),
74+
addPluginTemplate({
75+
src: normalize(resolve(templatesDir, 'plugin.ejs')),
7976

80-
// options: {
81-
// ...options,
82-
// },
83-
// })
77+
options: {
78+
...options,
79+
},
80+
})
81+
})
8482
},
8583
})
8684

packages/nuxt/src/runtime/plugin.ts

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,33 @@ import { connectDatabaseEmulator, getDatabase } from 'firebase/database'
66

77
export default defineNuxtPlugin((nuxtApp) => {
88
// TODO: initialize firebase app from config
9+
const appConfig = useAppConfig()
910

1011
console.log('initializing firebase app')
1112

12-
const firebaseApp = initializeApp({
13-
// FIXME: hard coded until the templates are fixed in nuxt
14-
apiKey: 'AIzaSyAkUKe36TPWL2eZTshgk-Xl4bY_R5SB97U',
15-
authDomain: 'vue-fire-store.firebaseapp.com',
16-
databaseURL: 'https://vue-fire-store.firebaseio.com',
17-
projectId: 'vue-fire-store',
18-
storageBucket: 'vue-fire-store.appspot.com',
19-
messagingSenderId: '998674887640',
20-
appId: '1:998674887640:web:1e2bb2cc3e5eb2fc3478ad',
21-
measurementId: 'G-RL4BTWXKJ7',
22-
})
13+
const firebaseApp = initializeApp(appConfig.firebaseConfig)
2314

2415
console.log('initialized app')
2516

17+
// TODO: if emulator
2618
// connectFirestoreEmulator(getFirestore(firebaseApp), 'localhost', 8080)
2719
// connectDatabaseEmulator(getDatabase(firebaseApp), 'localhost', 8081)
2820

2921
nuxtApp.vueApp.use(VueFire, {
3022
firebaseApp,
23+
modules: [
24+
// TODO: conditionally add modules (template)
25+
// VueFireAuth(),
26+
// VueFireAppCheck({
27+
// // debug: process.env.NODE_ENV !== 'production',
28+
// isTokenAutoRefreshEnabled: true,
29+
// provider: new ReCaptchaV3Provider(
30+
// '6LfJ0vgiAAAAAHheQE7GQVdG_c9m8xipBESx_SKI'
31+
// ),
32+
// }),
33+
// VueFireDatabaseOptionsAPI(),
34+
// VueFireFirestoreOptionsAPI(),
35+
],
3136
})
3237

3338
if (process.server) {

packages/nuxt/templates/plugin.ejs

Lines changed: 49 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,49 @@
1-
// @ts-check import { usePendingPromises, VueFire, useSSRInitialState } from
2-
'vuefire' import { initializeApp } from 'firebase/app' import {
3-
defineNuxtPlugin, toRaw, useAppConfig, useRuntimeConfig } from '#imports' import
4-
{ connectFirestoreEmulator, getFirestore } from 'firebase/firestore' import {
5-
connectDatabaseEmulator, getDatabase } from 'firebase/database' export default
6-
defineNuxtPlugin((nuxtApp) => { const appConfig = useAppConfig() const
7-
firebaseConfig = toRaw(appConfig).firebaseConfig console.log('Initializing
8-
Firebase app...', firebaseConfig) const firebaseApp =
9-
initializeApp(firebaseConfig) console.log('initialized firebase app',
10-
!!firebaseApp) // connectFirestoreEmulator(getFirestore(firebaseApp),
11-
'localhost', 8080) // connectDatabaseEmulator(getDatabase(firebaseApp),
12-
'localhost', 8081) nuxtApp.vueApp.use(VueFire, { firebaseApp, services: [ <%
13-
if(options.services.auth) { %> // Auth <% } %> ] }) if (process.server) { //
14-
TODO: pass the firebaseApp nuxtApp.payload.vuefire =
15-
useSSRInitialState(undefined, firebaseApp) } else if (nuxtApp.payload?.vuefire)
16-
{ // hydrate the plugin state from nuxtApp.payload.vuefire
17-
useSSRInitialState(nuxtApp.payload.vuefire, firebaseApp) } return {} })
1+
import { usePendingPromises, VueFire, useSSRInitialState } from 'vuefire'
2+
import { initializeApp } from 'firebase/app'
3+
import {
4+
defineNuxtPlugin,
5+
useAppConfig,
6+
useRuntimeConfig,
7+
} from '#app'
8+
import {
9+
connectFirestoreEmulator,
10+
getFirestore,
11+
} from 'firebase/firestore'
12+
import {
13+
connectDatabaseEmulator,
14+
getDatabase,
15+
} from 'firebase/database'
16+
import {
17+
toRaw,
18+
} from 'vue-demi'
19+
20+
export default defineNuxtPlugin((nuxtApp) => {
21+
const appConfig = useAppConfig()
22+
const firebaseConfig = toRaw(appConfig).firebaseConfig
23+
console.log('Initializing Firebase app...', firebaseConfig)
24+
25+
const firebaseApp = initializeApp(firebaseConfig)
26+
console.log('initialized firebase app', !!firebaseApp)
27+
28+
// connectFirestoreEmulator(getFirestore(firebaseApp), 'localhost', 8080)
29+
// connectDatabaseEmulator(getDatabase(firebaseApp), 'localhost', 8081)
30+
31+
nuxtApp.vueApp.use(VueFire, {
32+
firebaseApp,
33+
services: [
34+
<% if(options.services.auth) { %>
35+
// Auth
36+
<% } %>
37+
],
38+
})
39+
40+
if (process.server) {
41+
// TODO: pass the firebaseApp
42+
nuxtApp.payload.vuefire = useSSRInitialState(undefined, firebaseApp)
43+
} else if (nuxtApp.payload?.vuefire) {
44+
// hydrate the plugin state from nuxtApp.payload.vuefire
45+
useSSRInitialState(nuxtApp.payload.vuefire, firebaseApp)
46+
}
47+
48+
return {}
49+
})

0 commit comments

Comments
 (0)