fix(ui): fallback localization data was appearing in document (#11743)
This commit is contained in:
@@ -14,34 +14,39 @@ export function addLocalesToRequestFromData(req: PayloadRequest): void {
|
|||||||
} = req
|
} = req
|
||||||
|
|
||||||
if (data) {
|
if (data) {
|
||||||
let localeOnReq = req.locale
|
const localeOnReq = req.locale
|
||||||
let fallbackLocaleOnReq = req.fallbackLocale
|
const fallbackLocaleOnReq = req.fallbackLocale
|
||||||
|
let localeFromData
|
||||||
|
let fallbackLocaleFromData
|
||||||
|
|
||||||
if (!localeOnReq && data?.locale && typeof data.locale === 'string') {
|
if (!localeOnReq && data?.locale && typeof data.locale === 'string') {
|
||||||
localeOnReq = data.locale
|
localeFromData = data.locale
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!fallbackLocaleOnReq) {
|
if (!fallbackLocaleOnReq) {
|
||||||
if (data?.['fallback-locale'] && typeof data?.['fallback-locale'] === 'string') {
|
if (data?.['fallback-locale'] && typeof data?.['fallback-locale'] === 'string') {
|
||||||
fallbackLocaleOnReq = data['fallback-locale']
|
fallbackLocaleFromData = data['fallback-locale']
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data?.['fallbackLocale'] && typeof data?.['fallbackLocale'] === 'string') {
|
if (data?.['fallbackLocale'] && typeof data?.['fallbackLocale'] === 'string') {
|
||||||
fallbackLocaleOnReq = data['fallbackLocale']
|
fallbackLocaleFromData = data['fallbackLocale']
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const { fallbackLocale, locale } = sanitizeLocales({
|
if (!localeOnReq || !fallbackLocaleOnReq) {
|
||||||
fallbackLocale: fallbackLocaleOnReq,
|
const { fallbackLocale, locale } = sanitizeLocales({
|
||||||
locale: localeOnReq,
|
fallbackLocale: fallbackLocaleFromData,
|
||||||
localization: config.localization,
|
locale: localeFromData,
|
||||||
})
|
localization: config.localization,
|
||||||
|
})
|
||||||
|
|
||||||
if (locale) {
|
if (localeFromData) {
|
||||||
req.locale = locale
|
req.locale = locale
|
||||||
}
|
}
|
||||||
if (fallbackLocale) {
|
|
||||||
req.fallbackLocale = fallbackLocale
|
if (fallbackLocaleFromData) {
|
||||||
|
req.fallbackLocale = fallbackLocale
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import { getPayload } from '../index.js'
|
|||||||
import { sanitizeLocales } from './addLocalesToRequest.js'
|
import { sanitizeLocales } from './addLocalesToRequest.js'
|
||||||
import { getRequestLanguage } from './getRequestLanguage.js'
|
import { getRequestLanguage } from './getRequestLanguage.js'
|
||||||
import { parseCookies } from './parseCookies.js'
|
import { parseCookies } from './parseCookies.js'
|
||||||
import { sanitizeFallbackLocale } from './sanitizeFallbackLocale.js'
|
|
||||||
|
|
||||||
type Args = {
|
type Args = {
|
||||||
config: Promise<SanitizedConfig> | SanitizedConfig
|
config: Promise<SanitizedConfig> | SanitizedConfig
|
||||||
@@ -66,18 +65,13 @@ export const createPayloadRequest = async ({
|
|||||||
: {}
|
: {}
|
||||||
|
|
||||||
if (localization) {
|
if (localization) {
|
||||||
fallbackLocale = sanitizeFallbackLocale({
|
|
||||||
fallbackLocale,
|
|
||||||
locale,
|
|
||||||
localization,
|
|
||||||
})
|
|
||||||
|
|
||||||
const locales = sanitizeLocales({
|
const locales = sanitizeLocales({
|
||||||
fallbackLocale,
|
fallbackLocale,
|
||||||
locale,
|
locale,
|
||||||
localization,
|
localization,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
fallbackLocale = locales.fallbackLocale
|
||||||
locale = locales.locale
|
locale = locales.locale
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,12 +20,15 @@ export const sanitizeFallbackLocale = ({
|
|||||||
locale,
|
locale,
|
||||||
localization,
|
localization,
|
||||||
}: Args): null | string => {
|
}: Args): null | string => {
|
||||||
const hasFallbackLocale =
|
let hasFallbackLocale = false
|
||||||
fallbackLocale === undefined || fallbackLocale === null
|
|
||||||
? localization && localization.fallback
|
if (fallbackLocale === undefined || fallbackLocale === null) {
|
||||||
: fallbackLocale
|
hasFallbackLocale = Boolean(localization && localization.fallback)
|
||||||
? !['false', 'none', 'null'].includes(fallbackLocale)
|
}
|
||||||
: false
|
|
||||||
|
if (fallbackLocale && !['false', 'none', 'null'].includes(fallbackLocale)) {
|
||||||
|
hasFallbackLocale = true
|
||||||
|
}
|
||||||
|
|
||||||
if (hasFallbackLocale) {
|
if (hasFallbackLocale) {
|
||||||
if (!fallbackLocale) {
|
if (!fallbackLocale) {
|
||||||
|
|||||||
@@ -556,6 +556,30 @@ describe('Localization', () => {
|
|||||||
|
|
||||||
await cdpSession.detach()
|
await cdpSession.detach()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('should not show fallback data after saving data', async () => {
|
||||||
|
await page.goto(url.create)
|
||||||
|
await changeLocale(page, defaultLocale)
|
||||||
|
await page.locator('#field-title').fill(title)
|
||||||
|
|
||||||
|
await saveDocAndAssert(page)
|
||||||
|
await changeLocale(page, spanishLocale)
|
||||||
|
|
||||||
|
// POST data
|
||||||
|
await page.locator('#field-description').fill('non-localized description')
|
||||||
|
await saveDocAndAssert(page)
|
||||||
|
|
||||||
|
// POST updated data
|
||||||
|
await page.locator('#field-description').fill('non-localized description 2')
|
||||||
|
await saveDocAndAssert(page)
|
||||||
|
|
||||||
|
// The title should not have posted with a value
|
||||||
|
await expect
|
||||||
|
.poll(() => page.locator('#field-title').inputValue(), {
|
||||||
|
timeout: POLL_TOPASS_TIMEOUT,
|
||||||
|
})
|
||||||
|
.not.toBe(title)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
test('should use label in search filter when string or object', async () => {
|
test('should use label in search filter when string or object', async () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user