fix(richtext-lexical): one-line migrators not detecting richText migrations in nested fields

This commit is contained in:
Alessio Gravili
2024-07-15 14:47:57 -04:00
parent 0132367036
commit 6d68a4a269
2 changed files with 18 additions and 26 deletions

View File

@@ -25,26 +25,24 @@ export const migrateDocumentFieldsRecursively = ({
for (const field of fields) {
if (fieldHasSubFields(field) && !fieldIsArrayType(field)) {
if (fieldAffectsData(field) && typeof data[field.name] === 'object') {
migrateDocumentFieldsRecursively({
found += migrateDocumentFieldsRecursively({
data: data[field.name],
fields: field.fields,
found,
})
} else {
migrateDocumentFieldsRecursively({
found += migrateDocumentFieldsRecursively({
data,
found,
fields: field.fields,
found,
})
}
} else if (field.type === 'tabs') {
field.tabs.forEach((tab) => {
migrateDocumentFieldsRecursively({
found += migrateDocumentFieldsRecursively({
data,
found,
fields: tab.fields,
found,
})
})
} else if (Array.isArray(data[field.name])) {
@@ -52,11 +50,10 @@ export const migrateDocumentFieldsRecursively = ({
data[field.name].forEach((row, i) => {
const block = field.blocks.find(({ slug }) => slug === row?.blockType)
if (block) {
migrateDocumentFieldsRecursively({
found += migrateDocumentFieldsRecursively({
data: data[field.name][i],
found,
fields: block.fields,
found,
})
}
})
@@ -64,11 +61,10 @@ export const migrateDocumentFieldsRecursively = ({
if (field.type === 'array') {
data[field.name].forEach((_, i) => {
migrateDocumentFieldsRecursively({
found += migrateDocumentFieldsRecursively({
data: data[field.name][i],
found,
fields: field.fields,
found,
})
})
}

View File

@@ -23,26 +23,24 @@ export const upgradeDocumentFieldsRecursively = ({
for (const field of fields) {
if (fieldHasSubFields(field) && !fieldIsArrayType(field)) {
if (fieldAffectsData(field) && typeof data[field.name] === 'object') {
upgradeDocumentFieldsRecursively({
found += upgradeDocumentFieldsRecursively({
data: data[field.name],
fields: field.fields,
found,
})
} else {
upgradeDocumentFieldsRecursively({
found += upgradeDocumentFieldsRecursively({
data,
found,
fields: field.fields,
found,
})
}
} else if (field.type === 'tabs') {
field.tabs.forEach((tab) => {
upgradeDocumentFieldsRecursively({
found += upgradeDocumentFieldsRecursively({
data,
found,
fields: tab.fields,
found,
})
})
} else if (Array.isArray(data[field.name])) {
@@ -50,11 +48,10 @@ export const upgradeDocumentFieldsRecursively = ({
data[field.name].forEach((row, i) => {
const block = field.blocks.find(({ slug }) => slug === row?.blockType)
if (block) {
upgradeDocumentFieldsRecursively({
found += upgradeDocumentFieldsRecursively({
data: data[field.name][i],
found,
fields: block.fields,
found,
})
}
})
@@ -62,11 +59,10 @@ export const upgradeDocumentFieldsRecursively = ({
if (field.type === 'array') {
data[field.name].forEach((_, i) => {
upgradeDocumentFieldsRecursively({
found += upgradeDocumentFieldsRecursively({
data: data[field.name][i],
found,
fields: field.fields,
found,
})
})
}