Merged in fix/languageswitcher-cache (pull request #242)

bug: cache revalidation logic for language switcher

Approved-by: Michael Zetterberg
Approved-by: Simon.Emanuelsson
This commit is contained in:
Christel Westerberg
2024-06-13 06:45:27 +00:00
committed by Simon.Emanuelsson
3 changed files with 29 additions and 0 deletions

View File

@@ -7,6 +7,7 @@ import { Lang } from "@/constants/languages"
import { env } from "@/env/server" import { env } from "@/env/server"
import { internalServerError } from "@/server/errors/next" import { internalServerError } from "@/server/errors/next"
import { affix as breadcrumbsAffix } from "@/server/routers/contentstack/breadcrumbs/utils" import { affix as breadcrumbsAffix } from "@/server/routers/contentstack/breadcrumbs/utils"
import { languageSwitcherAffix } from "@/server/routers/contentstack/config/utils"
import { import {
generateRefsResponseTag, generateRefsResponseTag,
@@ -67,6 +68,11 @@ export async function POST(request: NextRequest) {
const refsTag = generateRefsResponseTag(entry.locale, entry.uid) const refsTag = generateRefsResponseTag(entry.locale, entry.uid)
const refTag = generateRefTag(entry.locale, content_type.uid, entry.uid) const refTag = generateRefTag(entry.locale, content_type.uid, entry.uid)
const tag = generateTag(entry.locale, entry.uid) const tag = generateTag(entry.locale, entry.uid)
const languageSwitcherTag = generateTag(
entry.locale,
entry.uid,
languageSwitcherAffix
)
console.info(`Revalidating refsTag: ${refsTag}`) console.info(`Revalidating refsTag: ${refsTag}`)
revalidateTag(refsTag) revalidateTag(refsTag)
@@ -77,6 +83,9 @@ export async function POST(request: NextRequest) {
console.info(`Revalidating tag: ${tag}`) console.info(`Revalidating tag: ${tag}`)
revalidateTag(tag) revalidateTag(tag)
console.info(`Revalidating language switcher tag: ${languageSwitcherTag}`)
revalidateTag(languageSwitcherTag)
if (entry.breadcrumbs) { if (entry.breadcrumbs) {
const breadcrumbsRefsTag = generateRefsResponseTag( const breadcrumbsRefsTag = generateRefsResponseTag(
entry.locale, entry.locale,

View File

@@ -39,6 +39,7 @@ import {
validateHeaderConfigSchema, validateHeaderConfigSchema,
validateLanguageSwitcherData, validateLanguageSwitcherData,
} from "./output" } from "./output"
import { languageSwitcherAffix } from "./utils"
import { import {
LanguageSwitcherData, LanguageSwitcherData,
@@ -144,6 +145,18 @@ export const configQueryRouter = router({
languageSwitcher: contentstackProcedure.query(async ({ ctx }) => { languageSwitcher: contentstackProcedure.query(async ({ ctx }) => {
const variables = { uid: ctx.uid, locale: ctx.lang } const variables = { uid: ctx.uid, locale: ctx.lang }
let urls: LanguageSwitcherData 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) { switch (ctx.contentType) {
case PageTypeEnum.accountPage: case PageTypeEnum.accountPage:
const accountPageRes = await batchRequest<LanguageSwitcherQueryDataRaw>( const accountPageRes = await batchRequest<LanguageSwitcherQueryDataRaw>(
@@ -151,10 +164,12 @@ export const configQueryRouter = router({
{ {
document: GetDaDeEnUrlsAccountPage, document: GetDaDeEnUrlsAccountPage,
variables, variables,
tags: tagsDaDeEn,
}, },
{ {
document: GetFiNoSvUrlsAccountPage, document: GetFiNoSvUrlsAccountPage,
variables, variables,
tags: tagsFiNoSv,
}, },
] ]
) )
@@ -184,10 +199,12 @@ export const configQueryRouter = router({
{ {
document: GetDaDeEnUrlsLoyaltyPage, document: GetDaDeEnUrlsLoyaltyPage,
variables, variables,
tags: tagsDaDeEn,
}, },
{ {
document: GetFiNoSvUrlsLoyaltyPage, document: GetFiNoSvUrlsLoyaltyPage,
variables, variables,
tags: tagsFiNoSv,
}, },
] ]
) )
@@ -222,10 +239,12 @@ export const configQueryRouter = router({
{ {
document: GetDaDeEnUrlsCurrentBlocksPage, document: GetDaDeEnUrlsCurrentBlocksPage,
variables, variables,
tags: tagsDaDeEn,
}, },
{ {
document: GetFiNoSvUrlsCurrentBlocksPage, document: GetFiNoSvUrlsCurrentBlocksPage,
variables, variables,
tags: tagsFiNoSv,
}, },
]) ])

View File

@@ -0,0 +1 @@
export const languageSwitcherAffix = "languageSwitcher"