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

View File

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