From eb963066f7238fa1ec596e82cd515686efd94e01 Mon Sep 17 00:00:00 2001 From: James Date: Wed, 7 Sep 2022 16:52:32 -0700 Subject: [PATCH] chore: fixes bug with links always populating --- .../RichText/elements/link/Element.tsx | 9 +- .../RichText/elements/link/index.scss | 2 +- .../richText/richTextRelationshipPromise.ts | 101 +++++++++--------- 3 files changed, 58 insertions(+), 54 deletions(-) diff --git a/src/admin/components/forms/field-types/RichText/elements/link/Element.tsx b/src/admin/components/forms/field-types/RichText/elements/link/Element.tsx index 6770e7e2d7..3bfc85a3b4 100644 --- a/src/admin/components/forms/field-types/RichText/elements/link/Element.tsx +++ b/src/admin/components/forms/field-types/RichText/elements/link/Element.tsx @@ -141,16 +141,19 @@ export const LinkElement = ({ attributes, children, element, editorRef, fieldPro boundingRef={editorRef} render={() => (
- {element.linkType === 'internal' && ( + {element.linkType === 'internal' && element.doc?.relationTo && element.doc?.value && ( - Linked to doc  + Linked to  + + {config.collections.find(({ slug }) => slug === element.doc.relationTo)?.labels?.singular} + )} {(element.linkType === 'custom' || !element.linkType) && ( Go to link:  { if (Array.isArray(children)) { (children as any[]).forEach((element) => { - if ((element.type === 'relationship' || element.type === 'upload') - && element?.value?.id - && (depth && currentDepth <= depth)) { - const collection = req.payload.collections[element?.relationTo]; - - if (collection) { - promises.push(populate({ - req, - id: element.value.id, - data: element, - key: 'value', - overrideAccess, - depth, - currentDepth, - field, - collection, - showHiddenFields, - })); - } - - if (element.type === 'upload' && Array.isArray(field.admin?.upload?.collections?.[element?.relationTo]?.fields)) { - recurseNestedFields({ - promises, - data: element.fields || {}, - fields: field.admin.upload.collections[element.relationTo].fields, - req, - overrideAccess, - depth, - currentDepth, - showHiddenFields, - }); - } - } - - if (element.type === 'link') { - if (element?.doc?.value && element?.doc?.relationTo) { - const collection = req.payload.collections[element?.doc?.relationTo]; + if ((depth && currentDepth <= depth)) { + if ((element.type === 'relationship' || element.type === 'upload') + && element?.value?.id) { + const collection = req.payload.collections[element?.relationTo]; if (collection) { promises.push(populate({ req, - id: element.doc.value, - data: element.doc, + id: element.value.id, + data: element, key: 'value', overrideAccess, depth, @@ -88,19 +55,53 @@ export const recurseRichText = ({ showHiddenFields, })); } + + if (element.type === 'upload' && Array.isArray(field.admin?.upload?.collections?.[element?.relationTo]?.fields)) { + recurseNestedFields({ + promises, + data: element.fields || {}, + fields: field.admin.upload.collections[element.relationTo].fields, + req, + overrideAccess, + depth, + currentDepth, + showHiddenFields, + }); + } } - if (Array.isArray(field.admin?.link?.fields)) { - recurseNestedFields({ - promises, - data: element.fields || {}, - fields: field.admin?.link?.fields, - req, - overrideAccess, - depth, - currentDepth, - showHiddenFields, - }); + if (element.type === 'link') { + if (element?.doc?.value && element?.doc?.relationTo) { + const collection = req.payload.collections[element?.doc?.relationTo]; + + if (collection) { + promises.push(populate({ + req, + id: element.doc.value, + data: element.doc, + key: 'value', + overrideAccess, + depth, + currentDepth, + field, + collection, + showHiddenFields, + })); + } + } + + if (Array.isArray(field.admin?.link?.fields)) { + recurseNestedFields({ + promises, + data: element.fields || {}, + fields: field.admin?.link?.fields, + req, + overrideAccess, + depth, + currentDepth, + showHiddenFields, + }); + } } }