1+ import { createSchemaOrg , handleNodesCSR , useVueUseHead } from '@vueuse/schema-org'
12import { defineNuxtPlugin } from '#app'
2- import { createSchemaOrg , getCurrentInstance , onBeforeUnmount , ref , useRoute , useRouter , useVueUseHead } from '#imports'
3+ import { useRoute } from '#imports'
34import meta from '#build/schemaOrg.config.mjs'
45
56export default defineNuxtPlugin ( ( nuxtApp ) => {
@@ -13,41 +14,10 @@ export default defineNuxtPlugin((nuxtApp) => {
1314 ...meta . config ,
1415 } )
1516
16- let _routeChanged = false
1717 nuxtApp . _useSchemaOrg = ( input ) => {
1818 // if we should client side rendered, we may not need to
19- const ids = ref ( new Set ( ) )
20-
21- const vm = getCurrentInstance ( ) !
22- let ctx = client . setupRouteContext ( vm . uid )
23- if ( ! client . serverRendered || _routeChanged ) {
24- // initial state will be correct from server, only need to watch for route changes to re-compute
25- ids . value = client . addNodesAndResolveRelations ( ctx , input )
26- if ( ! client . serverRendered )
27- client . generateSchema ( )
28- }
29-
30- const handleRouteChange = ( ) => {
31- ctx = client . setupRouteContext ( vm . uid )
32-
33- client . removeContext ( ctx )
34- ids . value = client . addNodesAndResolveRelations ( ctx , input )
35- client . generateSchema ( )
36-
37- client . setupDOM ( )
38- _routeChanged = true
39- }
40-
41- const unwatchRoute = useRouter ( ) . afterEach ( handleRouteChange )
42- // clean up nodes on unmount, client side only
43- onBeforeUnmount ( ( ) => {
44- client . removeContext ( ctx )
45- ids . value = new Set ( )
46- client . generateSchema ( )
47- unwatchRoute ( )
48- } )
49-
50- return ids
19+ // @todo handle true SSR mode
20+ return handleNodesCSR ( client , input )
5121 }
5222 nuxtApp . vueApp . use ( client )
5323} )
0 commit comments