feat: revalidate my pages breadcrumbs on demand

This commit is contained in:
Simon Emanuelsson
2024-04-16 12:42:44 +02:00
committed by Michael Zetterberg
parent ba13a00b63
commit 0c4aa592cc
24 changed files with 322 additions and 57 deletions

View File

@@ -6,6 +6,7 @@ import { z } from "zod"
import { Lang } from "@/constants/languages"
import { env } from "@/env/server"
import { internalServerError } from "@/server/errors/next"
import { affix as breadcrumbsAffix } from "@/server/routers/contentstack/breadcrumbs/utils"
import {
generateRefsResponseTag,
@@ -14,14 +15,16 @@ import {
} from "@/utils/generateTag"
const validateJsonBody = z.object({
api_key: z.string(),
module: z.string(),
data: z.object({
content_type: z.object({
uid: z.string(),
}),
entry: z.object({
breadcrumbs: z
.object({
title: z.string(),
})
.optional(),
locale: z.nativeEnum(Lang),
uid: z.string(),
url: z.string().optional(),
@@ -75,6 +78,25 @@ export async function POST(request: NextRequest) {
console.info(`Revalidating tag: ${tag}`)
revalidateTag(tag)
if (entry.breadcrumbs) {
const breadcrumbsRefsTag = generateRefsResponseTag(
entry.locale,
identifier,
breadcrumbsAffix
)
const breadcrumbsTag = generateTag(
entry.locale,
entry.uid,
breadcrumbsAffix
)
console.info(`Revalidating breadcrumbsRefsTag: ${breadcrumbsRefsTag}`)
revalidateTag(breadcrumbsRefsTag)
console.info(`Revalidating breadcrumbsTag: ${breadcrumbsTag}`)
revalidateTag(breadcrumbsTag)
}
return Response.json({ revalidated: true, now: Date.now() })
} catch (error) {
console.info("Failed to revalidate tag(s)")