54 lines
1.5 KiB
JavaScript
54 lines
1.5 KiB
JavaScript
import { getBySlug, getByDocumentId } from '@/libs/strapi'
|
|
|
|
export const data = async (pageContext) => {
|
|
const { routeParams, urlParsed } = pageContext
|
|
const { slug } = routeParams
|
|
const searchParams = urlParsed.search || {}
|
|
|
|
// Extract preview parameters from URL
|
|
const isPreview = searchParams.preview === 'true'
|
|
const status = searchParams.status || 'published'
|
|
const documentId = searchParams.documentId
|
|
const uid = searchParams.uid
|
|
|
|
try {
|
|
let page = null
|
|
|
|
// If we have a documentId from preview, fetch by document ID
|
|
if (isPreview && documentId && uid === 'api::page.page') {
|
|
const response = await getByDocumentId('pages', documentId, {
|
|
isPreview,
|
|
status,
|
|
isSingle: false
|
|
})
|
|
page = response.data?.[0] || null
|
|
} else {
|
|
// Normal fetch by slug
|
|
const response = await getBySlug('pages', slug, {
|
|
isPreview,
|
|
status
|
|
})
|
|
page = response.data?.[0] || null
|
|
}
|
|
|
|
return {
|
|
page,
|
|
// Pass preview state to the component
|
|
isPreview,
|
|
status,
|
|
documentId,
|
|
uid
|
|
}
|
|
} catch (error) {
|
|
console.error('Error fetching page:', error)
|
|
|
|
// Return null page but preserve preview state
|
|
return {
|
|
page: null,
|
|
isPreview,
|
|
status,
|
|
documentId,
|
|
uid
|
|
}
|
|
}
|
|
} |