Fix localized SEO template parsing
CI / quality (push) Waiting to run

This commit is contained in:
MOH
2026-03-07 18:54:23 +01:00
parent f259dfc6bd
commit cd6ec7fa78
2 changed files with 19 additions and 21 deletions
+3 -21
View File
@@ -110,35 +110,17 @@ export function parseSiteSettingsValue(
const siteSettings: SiteSettings = { const siteSettings: SiteSettings = {
locales: { locales: {
ar: normalizeSiteLocaleSettings( ar: normalizeSiteLocaleSettings(
{ locales.ar && typeof locales.ar === "object" ? (locales.ar as Record<string, unknown>) : {},
titleTemplate:
typeof parsed.titleTemplate === "string" && parsed.titleTemplate.trim()
? parsed.titleTemplate.trim()
: undefined,
...(locales.ar && typeof locales.ar === "object" ? (locales.ar as Record<string, unknown>) : {}),
},
defaults.locales.ar.siteName, defaults.locales.ar.siteName,
defaults.locales.ar.siteDescription, defaults.locales.ar.siteDescription,
), ),
en: normalizeSiteLocaleSettings( en: normalizeSiteLocaleSettings(
{ locales.en && typeof locales.en === "object" ? (locales.en as Record<string, unknown>) : {},
titleTemplate:
typeof parsed.titleTemplate === "string" && parsed.titleTemplate.trim()
? parsed.titleTemplate.trim()
: undefined,
...(locales.en && typeof locales.en === "object" ? (locales.en as Record<string, unknown>) : {}),
},
defaults.locales.en.siteName, defaults.locales.en.siteName,
defaults.locales.en.siteDescription, defaults.locales.en.siteDescription,
), ),
de: normalizeSiteLocaleSettings( de: normalizeSiteLocaleSettings(
{ locales.de && typeof locales.de === "object" ? (locales.de as Record<string, unknown>) : {},
titleTemplate:
typeof parsed.titleTemplate === "string" && parsed.titleTemplate.trim()
? parsed.titleTemplate.trim()
: undefined,
...(locales.de && typeof locales.de === "object" ? (locales.de as Record<string, unknown>) : {}),
},
defaults.locales.de.siteName, defaults.locales.de.siteName,
defaults.locales.de.siteDescription, defaults.locales.de.siteDescription,
), ),
+16
View File
@@ -50,4 +50,20 @@ describe("site settings helpers", () => {
expect(settings).toEqual(buildDefaultSiteSettings("Fallback Name")); expect(settings).toEqual(buildDefaultSiteSettings("Fallback Name"));
}); });
it("ignores legacy top-level title template values", () => {
const settings = parseSiteSettingsValue(
JSON.stringify({
titleTemplate: "{pageTitle} | moh-sass | Legacy",
locales: {
ar: {
siteName: "اسم الموقع",
},
},
}),
"Fallback Name",
);
expect(settings.locales.ar.titleTemplate).toBe("{pageTitle} | {siteName}");
});
}); });