44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import type { CollectionAfterChangeHook, CollectionAfterDeleteHook } from 'payload'
|
|
|
|
import { revalidatePath, revalidateTag } from 'next/cache'
|
|
|
|
import type { Page } from '../../../payload-types'
|
|
|
|
export const revalidatePage: CollectionAfterChangeHook<Page> = ({
|
|
doc,
|
|
previousDoc,
|
|
req: { payload, context },
|
|
}) => {
|
|
if (!context.disableRevalidate) {
|
|
if (doc._status === 'published') {
|
|
const path = doc.slug === 'home' ? '/' : `/${doc.slug}`
|
|
|
|
payload.logger.info(`Revalidating page at path: ${path}`)
|
|
|
|
revalidatePath(path)
|
|
revalidateTag('pages-sitemap')
|
|
}
|
|
|
|
// If the page was previously published, we need to revalidate the old path
|
|
if (previousDoc?._status === 'published' && doc._status !== 'published') {
|
|
const oldPath = previousDoc.slug === 'home' ? '/' : `/${previousDoc.slug}`
|
|
|
|
payload.logger.info(`Revalidating old page at path: ${oldPath}`)
|
|
|
|
revalidatePath(oldPath)
|
|
revalidateTag('pages-sitemap')
|
|
}
|
|
}
|
|
return doc
|
|
}
|
|
|
|
export const revalidateDelete: CollectionAfterDeleteHook<Page> = ({ doc, req: { context } }) => {
|
|
if (!context.disableRevalidate) {
|
|
const path = doc?.slug === 'home' ? '/' : `/${doc?.slug}`
|
|
revalidatePath(path)
|
|
revalidateTag('pages-sitemap')
|
|
}
|
|
|
|
return doc
|
|
}
|