From: Pooya Parsa Date: Fri, 8 Jul 2022 12:07:10 +0000 (+0200) Subject: simplify injections X-Git-Tag: @pinia/nuxt@0.3.0~22 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d15b0614d3a31630b23f61dd3b89b9ea66ba9524;p=thirdparty%2Fvuejs%2Fpinia.git simplify injections --- 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) }