Skip to content

Commit

Permalink
fix(document-driven): prevent 404 error on redirected pages (#1770)
Browse files Browse the repository at this point in the history
  • Loading branch information
farnabaz committed Dec 26, 2022
1 parent 5a2d287 commit b98cb11
Showing 1 changed file with 12 additions and 8 deletions.
20 changes: 12 additions & 8 deletions src/runtime/plugins/documentDriven.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import type { RouteLocationNormalized, RouteLocationNormalizedLoaded } from 'vue-router'
// @ts-ignore
import { useRuntimeConfig, addRouteMiddleware, callWithNuxt, navigateTo } from '#app'
import type { NuxtApp } from 'nuxt/app'
import { withoutTrailingSlash, hasProtocol } from 'ufo'
import { NavItem, ParsedContent } from '../types'
// @ts-ignore
import { defineNuxtPlugin, queryContent, useContentHelpers, useContentState, fetchContentNavigation, useRoute } from '#imports'
// @ts-ignore
import layouts from '#build/layouts'

export default defineNuxtPlugin((nuxt: NuxtApp) => {
export default defineNuxtPlugin((nuxt) => {
const { documentDriven: moduleOptions, experimental } = useRuntimeConfig()?.public?.content

/**
Expand Down Expand Up @@ -212,9 +211,18 @@ export default defineNuxtPlugin((nuxt: NuxtApp) => {
globals.value = _globals
}

if (_surround) {
surrounds.value[_path] = _surround
}

// Use `redirect` key to redirect to another page
if (_page?.redirect) { return _page?.redirect }
if (_page?._dir?.navigation?.redirect) { return _page?._dir?.navigation?.redirect }
const redirectTo = _page?.redirect || _page?._dir?.navigation?.redirect
if (redirectTo) {
// In case of redirection, it is not necessary to fetch page layout
// Just fill the page state with the redirect path
pages.value[_path] = _page
return redirectTo
}

if (_page) {
// Find used layout
Expand All @@ -234,10 +242,6 @@ export default defineNuxtPlugin((nuxt: NuxtApp) => {
pages.value[_path] = _page
}

if (_surround) {
surrounds.value[_path] = _surround
}

// Call hook after content is fetched
// @ts-ignore
await nuxt.callHook('content:document-driven:finish', { route: to, dedup, page: _page, navigation: _navigation, globals: _globals, surround: _surround })
Expand Down

0 comments on commit b98cb11

Please sign in to comment.