fix(stats): include locale header in vary (#34789)
This commit is contained in:
@@ -39,7 +39,7 @@ export async function statsProxy(evt: APIEvent) {
|
|||||||
headers.delete("content-encoding")
|
headers.delete("content-encoding")
|
||||||
headers.delete("content-length")
|
headers.delete("content-length")
|
||||||
headers.delete("etag")
|
headers.delete("etag")
|
||||||
appendVary(headers, "Accept-Language", "Cookie")
|
appendVary(headers, "Accept-Language", "Cookie", LOCALE_HEADER)
|
||||||
|
|
||||||
return new Response(rewriteStatsHtml(await response.text()), {
|
return new Response(rewriteStatsHtml(await response.text()), {
|
||||||
status: response.status,
|
status: response.status,
|
||||||
@@ -78,7 +78,7 @@ function redirectToLocalizedData(request: Request, url: URL, locale: ReturnType<
|
|||||||
Location: next.toString(),
|
Location: next.toString(),
|
||||||
})
|
})
|
||||||
headers.append("set-cookie", cookie(locale))
|
headers.append("set-cookie", cookie(locale))
|
||||||
appendVary(headers, "Accept-Language", "Cookie")
|
appendVary(headers, "Accept-Language", "Cookie", LOCALE_HEADER)
|
||||||
|
|
||||||
return new Response(null, {
|
return new Response(null, {
|
||||||
status: 308,
|
status: 308,
|
||||||
|
|||||||
@@ -4,8 +4,10 @@ import { createStore } from "solid-js/store"
|
|||||||
import { createSimpleContext } from "@opencode-ai/ui/context"
|
import { createSimpleContext } from "@opencode-ai/ui/context"
|
||||||
import {
|
import {
|
||||||
LOCALES,
|
LOCALES,
|
||||||
|
cookie,
|
||||||
detectFromLanguages,
|
detectFromLanguages,
|
||||||
dir,
|
dir,
|
||||||
|
fromPathname,
|
||||||
label,
|
label,
|
||||||
localeFromCookieHeader,
|
localeFromCookieHeader,
|
||||||
localeFromRequest,
|
localeFromRequest,
|
||||||
@@ -19,11 +21,16 @@ function initial() {
|
|||||||
const event = getRequestEvent()
|
const event = getRequestEvent()
|
||||||
if (event) return localeFromRequest(event.request)
|
if (event) return localeFromRequest(event.request)
|
||||||
|
|
||||||
|
if (typeof window === "object") {
|
||||||
|
const fromPath = fromPathname(window.location.pathname)
|
||||||
|
if (fromPath) return fromPath
|
||||||
|
}
|
||||||
|
|
||||||
if (typeof document === "object") {
|
if (typeof document === "object") {
|
||||||
const fromDom = parseLocale(document.documentElement.dataset.locale)
|
|
||||||
if (fromDom) return fromDom
|
|
||||||
const fromCookie = localeFromCookieHeader(document.cookie)
|
const fromCookie = localeFromCookieHeader(document.cookie)
|
||||||
if (fromCookie) return fromCookie
|
if (fromCookie) return fromCookie
|
||||||
|
const fromDom = parseLocale(document.documentElement.dataset.locale)
|
||||||
|
if (fromDom) return fromDom
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof navigator !== "object") return "en" satisfies Locale
|
if (typeof navigator !== "object") return "en" satisfies Locale
|
||||||
@@ -55,6 +62,8 @@ export const { use: useLanguage, provider: LanguageProvider } = createSimpleCont
|
|||||||
},
|
},
|
||||||
setLocale(next: Locale) {
|
setLocale(next: Locale) {
|
||||||
setStore("locale", next)
|
setStore("locale", next)
|
||||||
|
if (typeof document !== "object") return
|
||||||
|
document.cookie = cookie(next)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
|
import { LOCALE_HEADER } from "../lib/language"
|
||||||
|
|
||||||
const statsPageCacheControl = "public, max-age=60, s-maxage=300, stale-while-revalidate=86400"
|
const statsPageCacheControl = "public, max-age=60, s-maxage=300, stale-while-revalidate=86400"
|
||||||
|
|
||||||
export function setStatsPageCacheHeaders(headers: Headers | undefined) {
|
export function setStatsPageCacheHeaders(headers: Headers | undefined) {
|
||||||
if (!headers) return
|
if (!headers) return
|
||||||
|
|
||||||
headers.set("Cache-Control", statsPageCacheControl)
|
headers.set("Cache-Control", statsPageCacheControl)
|
||||||
appendVary(headers, "Accept-Language", "Cookie")
|
appendVary(headers, "Accept-Language", "Cookie", LOCALE_HEADER)
|
||||||
}
|
}
|
||||||
|
|
||||||
function appendVary(headers: Headers, ...values: string[]) {
|
function appendVary(headers: Headers, ...values: string[]) {
|
||||||
|
|||||||
Reference in New Issue
Block a user