Merged in feat/refactor-header-footer-sitewidealert (pull request #1374)
Refactor: removed parallel routes for header, footer and sidewidealert. Langswitcher and sidewidealert now client components * feat - removed parallel routes and made sidepeek and sitewidealerts as client components * Langswitcher as client component * Fixed lang switcher for current header * Passing lang when fetching siteconfig * Merge branch 'master' into feat/refactor-header-footer-sitewidealert * Refactor * Removed dead code * Show only languages that has translation * Refetch sitewidealert every 60 seconds * Merge branch 'master' into feat/refactor-header-footer-sitewidealert * Removed sidepeek parallel route from my-stay * Added missing env.var to env.test * Removed console.log Approved-by: Joakim Jäderberg
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import { resolve as resolveEntry } from "@/utils/entry"
|
||||
|
||||
import type { Lang } from "@/constants/languages"
|
||||
|
||||
const entryResponseCache: Map<
|
||||
string,
|
||||
{
|
||||
contentType: string | null
|
||||
uid: string | null
|
||||
expiresAt: number
|
||||
}
|
||||
> = new Map()
|
||||
|
||||
let size: number = 0
|
||||
|
||||
export const fetchAndCacheEntry = async (path: string, lang: Lang) => {
|
||||
const cacheKey = `${path + lang}`
|
||||
const cachedResponse = entryResponseCache.get(cacheKey)
|
||||
|
||||
if (cachedResponse && cachedResponse.expiresAt > Date.now() / 1000) {
|
||||
console.log("[CMS MIDDLEWARE]: CACHE HIT")
|
||||
return cachedResponse
|
||||
}
|
||||
|
||||
if (cachedResponse && cachedResponse.expiresAt < Date.now() / 1000) {
|
||||
console.log("[CMS MIDDLEWARE]: CACHE STALE")
|
||||
size -= JSON.stringify(cachedResponse).length
|
||||
entryResponseCache.delete(cacheKey)
|
||||
} else {
|
||||
console.log("[CMS MIDDLEWARE]: CACHE MISS")
|
||||
}
|
||||
|
||||
const { contentType, uid } = await resolveEntry(path, lang)
|
||||
let expiresAt = Date.now() / 1000
|
||||
if (!contentType || !uid) {
|
||||
expiresAt += 600
|
||||
} else {
|
||||
expiresAt += 3600 * 12
|
||||
}
|
||||
const entryCache = { contentType, uid, expiresAt }
|
||||
size += JSON.stringify(entryCache).length
|
||||
console.log("[CMS MIDDLEWARE] Adding to cache", entryCache)
|
||||
console.log("[CMS MIDDLEWARE] Cache size (total)", size)
|
||||
entryResponseCache.set(cacheKey, entryCache)
|
||||
|
||||
return {
|
||||
contentType,
|
||||
uid,
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
import { Lang } from "@/constants/languages"
|
||||
|
||||
import { findLang } from "@/utils/languages"
|
||||
import { removeTrailingSlash } from "@/utils/url"
|
||||
|
||||
import { fetchAndCacheEntry } from "./fetchAndCacheEntry"
|
||||
|
||||
export const getUidAndContentTypeByPath = async (pathname: string) => {
|
||||
const lang = findLang(pathname)
|
||||
|
||||
const pathWithoutTrailingSlash = removeTrailingSlash(pathname)
|
||||
|
||||
const contentTypePathName = pathWithoutTrailingSlash.replace(`/${lang}`, "")
|
||||
|
||||
const { contentType, uid } = await fetchAndCacheEntry(
|
||||
contentTypePathName,
|
||||
lang ?? Lang.en
|
||||
)
|
||||
|
||||
return { contentType, uid }
|
||||
}
|
||||
Reference in New Issue
Block a user