chore: uses defaultLocale for local operations locale and fallbackLocale
This commit is contained in:
@@ -44,10 +44,11 @@ export default async function createLocal<T = any>(payload: Payload, options: Op
|
||||
} = options;
|
||||
|
||||
const collection = payload.collections[collectionSlug];
|
||||
const defaultLocale = payload?.config?.localization ? payload?.config?.localization?.defaultLocale : null;
|
||||
|
||||
req.payloadAPI = 'local';
|
||||
req.locale = locale || req?.locale || (payload?.config?.localization ? payload?.config?.localization?.defaultLocale : null);
|
||||
req.fallbackLocale = fallbackLocale || req?.fallbackLocale || null;
|
||||
req.locale = locale ?? req?.locale ?? defaultLocale;
|
||||
req.fallbackLocale = fallbackLocale ?? req?.fallbackLocale ?? defaultLocale;
|
||||
req.payload = payload;
|
||||
req.i18n = i18n(payload.config.i18n);
|
||||
req.files = {
|
||||
|
||||
@@ -22,20 +22,21 @@ export default async function deleteLocal<T extends TypeWithID = any>(payload: P
|
||||
collection: collectionSlug,
|
||||
depth,
|
||||
id,
|
||||
locale = payload.config.localization ? payload.config.localization?.defaultLocale : null,
|
||||
fallbackLocale = null,
|
||||
locale,
|
||||
fallbackLocale,
|
||||
user,
|
||||
overrideAccess = true,
|
||||
showHiddenFields,
|
||||
} = options;
|
||||
|
||||
const collection = payload.collections[collectionSlug];
|
||||
const defaultLocale = payload?.config?.localization ? payload?.config?.localization?.defaultLocale : null;
|
||||
|
||||
const req = {
|
||||
user,
|
||||
payloadAPI: 'local',
|
||||
locale,
|
||||
fallbackLocale,
|
||||
locale: locale ?? defaultLocale,
|
||||
fallbackLocale: fallbackLocale ?? defaultLocale,
|
||||
payload,
|
||||
i18n: i18n(payload.config.i18n),
|
||||
} as PayloadRequest;
|
||||
|
||||
@@ -48,10 +48,11 @@ export default async function findLocal<T extends TypeWithID = any>(payload: Pay
|
||||
} = options;
|
||||
|
||||
const collection = payload.collections[collectionSlug];
|
||||
const defaultLocale = payload?.config?.localization ? payload?.config?.localization?.defaultLocale : null;
|
||||
|
||||
req.payloadAPI = 'local';
|
||||
req.locale = locale || req?.locale || (payload?.config?.localization ? payload?.config?.localization?.defaultLocale : null);
|
||||
req.fallbackLocale = fallbackLocale || req?.fallbackLocale || null;
|
||||
req.locale = locale ?? req?.locale ?? defaultLocale;
|
||||
req.fallbackLocale = fallbackLocale ?? req?.fallbackLocale ?? defaultLocale;
|
||||
req.i18n = i18n(payload.config.i18n);
|
||||
req.payload = payload;
|
||||
|
||||
|
||||
@@ -39,10 +39,11 @@ export default async function findByIDLocal<T extends TypeWithID = any>(payload:
|
||||
} = options;
|
||||
|
||||
const collection = payload.collections[collectionSlug];
|
||||
const defaultLocale = payload?.config?.localization ? payload?.config?.localization?.defaultLocale : null;
|
||||
|
||||
req.payloadAPI = 'local';
|
||||
req.locale = locale || req?.locale || (payload?.config?.localization ? payload?.config?.localization?.defaultLocale : null);
|
||||
req.fallbackLocale = fallbackLocale || req?.fallbackLocale || null;
|
||||
req.locale = locale ?? req?.locale ?? defaultLocale;
|
||||
req.fallbackLocale = fallbackLocale ?? req?.fallbackLocale ?? defaultLocale;
|
||||
req.i18n = i18n(payload.config.i18n);
|
||||
req.payload = payload;
|
||||
|
||||
|
||||
@@ -24,8 +24,8 @@ export default async function findVersionByIDLocal<T extends TypeWithVersion<T>
|
||||
collection: collectionSlug,
|
||||
depth,
|
||||
id,
|
||||
locale = payload.config.localization ? payload.config.localization?.defaultLocale : null,
|
||||
fallbackLocale = null,
|
||||
locale,
|
||||
fallbackLocale,
|
||||
overrideAccess = true,
|
||||
disableErrors = false,
|
||||
showHiddenFields,
|
||||
@@ -33,10 +33,11 @@ export default async function findVersionByIDLocal<T extends TypeWithVersion<T>
|
||||
} = options;
|
||||
|
||||
const collection = payload.collections[collectionSlug];
|
||||
const defaultLocale = payload?.config?.localization ? payload?.config?.localization?.defaultLocale : null;
|
||||
|
||||
req.payloadAPI = 'local';
|
||||
req.locale = locale || req?.locale || this?.config?.localization?.defaultLocale;
|
||||
req.fallbackLocale = fallbackLocale || req?.fallbackLocale || null;
|
||||
req.locale = locale ?? req?.locale ?? defaultLocale;
|
||||
req.fallbackLocale = fallbackLocale ?? req?.fallbackLocale ?? defaultLocale;
|
||||
req.i18n = i18n(payload.config.i18n);
|
||||
req.payload = payload;
|
||||
|
||||
|
||||
@@ -28,8 +28,8 @@ export default async function findVersionsLocal<T extends TypeWithVersion<T> = a
|
||||
page,
|
||||
limit,
|
||||
where,
|
||||
locale = payload.config.localization ? payload.config.localization?.defaultLocale : null,
|
||||
fallbackLocale = null,
|
||||
locale,
|
||||
fallbackLocale,
|
||||
user,
|
||||
overrideAccess = true,
|
||||
showHiddenFields,
|
||||
@@ -37,13 +37,14 @@ export default async function findVersionsLocal<T extends TypeWithVersion<T> = a
|
||||
} = options;
|
||||
|
||||
const collection = payload.collections[collectionSlug];
|
||||
const defaultLocale = payload?.config?.localization ? payload?.config?.localization?.defaultLocale : null;
|
||||
|
||||
const i18n = i18nInit(payload.config.i18n);
|
||||
const req = {
|
||||
user,
|
||||
payloadAPI: 'local',
|
||||
locale,
|
||||
fallbackLocale,
|
||||
locale: locale ?? defaultLocale,
|
||||
fallbackLocale: fallbackLocale ?? defaultLocale,
|
||||
payload,
|
||||
i18n,
|
||||
} as PayloadRequest;
|
||||
|
||||
@@ -28,8 +28,8 @@ export default async function updateLocal<T = any>(payload: Payload, options: Op
|
||||
const {
|
||||
collection: collectionSlug,
|
||||
depth,
|
||||
locale = payload.config.localization ? payload.config.localization?.defaultLocale : null,
|
||||
fallbackLocale = null,
|
||||
locale,
|
||||
fallbackLocale,
|
||||
data,
|
||||
id,
|
||||
user,
|
||||
@@ -44,12 +44,13 @@ export default async function updateLocal<T = any>(payload: Payload, options: Op
|
||||
|
||||
const collection = payload.collections[collectionSlug];
|
||||
const i18n = i18nInit(payload.config.i18n);
|
||||
const defaultLocale = payload.config.localization ? payload.config.localization?.defaultLocale : null;
|
||||
|
||||
const req = {
|
||||
user,
|
||||
payloadAPI: 'local',
|
||||
locale,
|
||||
fallbackLocale,
|
||||
locale: locale ?? defaultLocale,
|
||||
fallbackLocale: fallbackLocale ?? defaultLocale,
|
||||
payload,
|
||||
i18n,
|
||||
files: {
|
||||
|
||||
21
test/localization/collections/Array/index.ts
Normal file
21
test/localization/collections/Array/index.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import type { CollectionConfig } from '../../../../src/collections/config/types';
|
||||
|
||||
export const arrayCollectionSlug = 'array-fields';
|
||||
|
||||
export const ArrayCollection: CollectionConfig = {
|
||||
slug: arrayCollectionSlug,
|
||||
fields: [
|
||||
{
|
||||
name: 'items',
|
||||
type: 'array',
|
||||
localized: true,
|
||||
fields: [
|
||||
{
|
||||
name: 'text',
|
||||
type: 'text',
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
@@ -1,6 +1,6 @@
|
||||
import { buildConfig } from '../buildConfig';
|
||||
import { devUser } from '../credentials';
|
||||
import { GlobalArray } from './Array';
|
||||
import { ArrayCollection } from './collections/Array';
|
||||
import { LocalizedPost, RelationshipLocalized } from './payload-types';
|
||||
import {
|
||||
defaultLocale,
|
||||
@@ -36,6 +36,7 @@ export default buildConfig({
|
||||
localization: {
|
||||
locales: [defaultLocale, spanishLocale],
|
||||
defaultLocale,
|
||||
fallback: true,
|
||||
},
|
||||
collections: [
|
||||
{
|
||||
@@ -65,27 +66,7 @@ export default buildConfig({
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: 'arrays',
|
||||
fields: [
|
||||
{
|
||||
type: 'text',
|
||||
name: 'requiredText',
|
||||
localized: true,
|
||||
},
|
||||
{
|
||||
type: 'array',
|
||||
name: 'arrayFields',
|
||||
localized: true,
|
||||
fields: [
|
||||
{
|
||||
name: 'text',
|
||||
type: 'text',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
ArrayCollection,
|
||||
{
|
||||
slug: withRequiredLocalizedFields,
|
||||
fields: [
|
||||
|
||||
@@ -22,8 +22,9 @@ import {
|
||||
spanishTitle,
|
||||
} from './shared';
|
||||
import type { Where } from '../../src/types';
|
||||
import { arrayCollectionSlug } from './collections/Array';
|
||||
|
||||
const collection = config.collections[1]?.slug;
|
||||
const collection = slug;
|
||||
|
||||
let serverURL;
|
||||
|
||||
@@ -199,6 +200,7 @@ describe('Localization', () => {
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('Localized Relationship', () => {
|
||||
let localizedRelation: LocalizedPost;
|
||||
let localizedRelation2: LocalizedPost;
|
||||
@@ -650,6 +652,73 @@ describe('Localization', () => {
|
||||
expect(result.title[spanishLocale]).toStrictEqual(spanishTitle);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Localized - Arrays', () => {
|
||||
let docID;
|
||||
|
||||
beforeAll(async () => {
|
||||
const englishDoc = await payload.create({
|
||||
collection: arrayCollectionSlug,
|
||||
data: {
|
||||
items: [
|
||||
{
|
||||
text: englishTitle,
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
|
||||
docID = englishDoc.id;
|
||||
});
|
||||
|
||||
it('should use default locale as fallback', async () => {
|
||||
const spanishDoc = await payload.findByID({
|
||||
locale: spanishLocale,
|
||||
collection: arrayCollectionSlug,
|
||||
id: docID,
|
||||
});
|
||||
|
||||
expect(spanishDoc.items[0].text).toStrictEqual(englishTitle);
|
||||
});
|
||||
|
||||
it('should use empty array as value', async () => {
|
||||
const updatedSpanishDoc = await payload.update({
|
||||
collection: arrayCollectionSlug,
|
||||
locale: spanishLocale,
|
||||
id: docID,
|
||||
data: {
|
||||
items: [],
|
||||
},
|
||||
});
|
||||
|
||||
expect(updatedSpanishDoc.items).toStrictEqual([]);
|
||||
});
|
||||
|
||||
it('should use fallback value if setting null', async () => {
|
||||
await payload.update({
|
||||
collection: arrayCollectionSlug,
|
||||
locale: spanishLocale,
|
||||
id: docID,
|
||||
data: {
|
||||
items: [],
|
||||
},
|
||||
});
|
||||
|
||||
const updatedSpanishDoc = await payload.update({
|
||||
collection: arrayCollectionSlug,
|
||||
locale: spanishLocale,
|
||||
id: docID,
|
||||
data: {
|
||||
items: null,
|
||||
},
|
||||
});
|
||||
|
||||
// should return the value of the fallback locale
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-ignore
|
||||
expect(updatedSpanishDoc.items[0].text).toStrictEqual(englishTitle);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
async function createLocalizedPost(data: {
|
||||
|
||||
Reference in New Issue
Block a user