From 030bac87bd864520edfa4e1d393979617dca3a2a Mon Sep 17 00:00:00 2001 From: Christel Westerberg Date: Wed, 12 Jun 2024 14:39:02 +0200 Subject: [PATCH] fix: cache revalidation logic for language switcher --- app/api/web/revalidate/route.ts | 9 +++++++++ server/routers/contentstack/config/query.ts | 19 +++++++++++++++++++ server/routers/contentstack/config/utils.ts | 1 + 3 files changed, 29 insertions(+) create mode 100644 server/routers/contentstack/config/utils.ts diff --git a/app/api/web/revalidate/route.ts b/app/api/web/revalidate/route.ts index e6e34cf72..ca2b529a9 100644 --- a/app/api/web/revalidate/route.ts +++ b/app/api/web/revalidate/route.ts @@ -7,6 +7,7 @@ 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 { languageSwitcherAffix } from "@/server/routers/contentstack/config/utils" import { generateRefsResponseTag, @@ -67,6 +68,11 @@ export async function POST(request: NextRequest) { const refsTag = generateRefsResponseTag(entry.locale, entry.uid) const refTag = generateRefTag(entry.locale, content_type.uid, entry.uid) const tag = generateTag(entry.locale, entry.uid) + const languageSwitcherTag = generateTag( + entry.locale, + entry.uid, + languageSwitcherAffix + ) console.info(`Revalidating refsTag: ${refsTag}`) revalidateTag(refsTag) @@ -77,6 +83,9 @@ export async function POST(request: NextRequest) { console.info(`Revalidating tag: ${tag}`) revalidateTag(tag) + console.info(`Revalidating language switcher tag: ${languageSwitcherTag}`) + revalidateTag(languageSwitcherTag) + if (entry.breadcrumbs) { const breadcrumbsRefsTag = generateRefsResponseTag( entry.locale, diff --git a/server/routers/contentstack/config/query.ts b/server/routers/contentstack/config/query.ts index 56d78ac08..e99b7a3cc 100644 --- a/server/routers/contentstack/config/query.ts +++ b/server/routers/contentstack/config/query.ts @@ -39,6 +39,7 @@ import { validateHeaderConfigSchema, validateLanguageSwitcherData, } from "./output" +import { languageSwitcherAffix } from "./utils" import { LanguageSwitcherData, @@ -144,6 +145,18 @@ export const configQueryRouter = router({ languageSwitcher: contentstackProcedure.query(async ({ ctx }) => { const variables = { uid: ctx.uid, locale: ctx.lang } let urls: LanguageSwitcherData + + const tagsDaDeEn = [ + generateTag(Lang.da, ctx.uid, languageSwitcherAffix), + generateTag(Lang.de, ctx.uid, languageSwitcherAffix), + generateTag(Lang.en, ctx.uid, languageSwitcherAffix), + ] + const tagsFiNoSv = [ + generateTag(Lang.fi, ctx.uid, languageSwitcherAffix), + generateTag(Lang.no, ctx.uid, languageSwitcherAffix), + generateTag(Lang.sv, ctx.uid, languageSwitcherAffix), + ] + switch (ctx.contentType) { case PageTypeEnum.accountPage: const accountPageRes = await batchRequest( @@ -151,10 +164,12 @@ export const configQueryRouter = router({ { document: GetDaDeEnUrlsAccountPage, variables, + tags: tagsDaDeEn, }, { document: GetFiNoSvUrlsAccountPage, variables, + tags: tagsFiNoSv, }, ] ) @@ -184,10 +199,12 @@ export const configQueryRouter = router({ { document: GetDaDeEnUrlsLoyaltyPage, variables, + tags: tagsDaDeEn, }, { document: GetFiNoSvUrlsLoyaltyPage, variables, + tags: tagsFiNoSv, }, ] ) @@ -222,10 +239,12 @@ export const configQueryRouter = router({ { document: GetDaDeEnUrlsCurrentBlocksPage, variables, + tags: tagsDaDeEn, }, { document: GetFiNoSvUrlsCurrentBlocksPage, variables, + tags: tagsFiNoSv, }, ]) diff --git a/server/routers/contentstack/config/utils.ts b/server/routers/contentstack/config/utils.ts new file mode 100644 index 000000000..8adaaa376 --- /dev/null +++ b/server/routers/contentstack/config/utils.ts @@ -0,0 +1 @@ +export const languageSwitcherAffix = "languageSwitcher"