From d15b0614d3a31630b23f61dd3b89b9ea66ba9524 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Fri, 8 Jul 2022 14:07:10 +0200 Subject: [PATCH] simplify injections --- packages/nuxt/src/runtime/plugin.ts | 20 +++++++------------- packages/nuxt/src/runtime/plugin.vue2.ts | 21 +++------------------ 2 files changed, 10 insertions(+), 31 deletions(-) diff --git a/packages/nuxt/src/runtime/plugin.ts b/packages/nuxt/src/runtime/plugin.ts index 577dccb6..2798afe8 100644 --- a/packages/nuxt/src/runtime/plugin.ts +++ b/packages/nuxt/src/runtime/plugin.ts @@ -3,25 +3,19 @@ import { defineNuxtPlugin } from '#imports' export default defineNuxtPlugin((nuxtApp) => { const pinia = createPinia() - nuxtApp.vueApp.use(pinia) - - // Make sure to inject pinia after installing the plugin because in Nuxt 3, inject defines a non configurable getter - // on app.config.globalProperties - // add $pinia to the context - nuxtApp.provide('pinia', pinia) - setActivePinia(pinia) - // Add access to `$nuxt` - pinia._p.push(({ store }) => { - // Make it non enumerable so it avoids any serialization and devtools - Object.defineProperty(store, '$nuxt', { value: nuxtApp }) - }) - if (process.server) { nuxtApp.payload.pinia = pinia.state.value } else if (nuxtApp.payload && nuxtApp.payload.pinia) { pinia.state.value = nuxtApp.payload.pinia } + + // Inject $pinia + return { + provide: { + pinia + } + } }) diff --git a/packages/nuxt/src/runtime/plugin.vue2.ts b/packages/nuxt/src/runtime/plugin.vue2.ts index e8a6c66a..085ee9c0 100644 --- a/packages/nuxt/src/runtime/plugin.vue2.ts +++ b/packages/nuxt/src/runtime/plugin.vue2.ts @@ -3,31 +3,13 @@ import { createPinia, setActivePinia, PiniaVuePlugin } from 'pinia' // TODO: workaround that should probably be removed in the future const Vue = 'default' in _Vue2 ? (_Vue2 as any).default : _Vue2 - Vue.use(PiniaVuePlugin) export default (context: any, inject: any) => { const pinia = createPinia() - // simulate new Vue({ pinia }) context.app.pinia = pinia - - // make sure to inject pinia after installing the plugin because in Nuxt 3, inject defines a non configurable getter - // on app.config.globalProperties - // add $pinia to the context - inject('pinia', pinia) - - // to allow accessing pinia without the $ - // TODO: remove this in deprecation - context.pinia = pinia setActivePinia(pinia) - // add access to `$nuxt` - // TODO: adapt to Nuxt 3 with a definePlugin - pinia._p.push(({ store }) => { - // make it non enumerable so it avoids any serialization and devtools - Object.defineProperty(store, '$nuxt', { value: context }) - }) - if (process.server) { context.beforeNuxtRender((ctx: any) => { ctx.nuxtState.pinia = pinia.state.value @@ -35,4 +17,7 @@ export default (context: any, inject: any) => { } else if (context.nuxtState && context.nuxtState.pinia) { pinia.state.value = context.nuxtState.pinia } + + // Inject $pinia + inject('pinia', pinia) } -- 2.47.2