Real-time collaboration: Add type guard for rich-text attributes#73946
Conversation
* Check for the current attribute existing before proceeding * Add a test for the new check added
|
Warning: Type of PR label mismatch To merge this PR, it requires exactly 1 label indicating the type of PR. Other labels are optional and not being checked here.
Read more about Type labels in Gutenberg. Don't worry if you don't have the required permissions to add labels; the PR reviewer should be able to help with the task. |
|
The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message. To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. |
What?
Introduce a type guard to ensure that a rich-text attribute is represented by a
Y.Texttype.Why?
Our assumption that an attribute is represented in the CRDT doc as a
Y.Textinstance was based on the current block name, which may have changed as part of the current changeset. For example, a block can be transformed fromcore/freeformtocore/paragraph. Both of those blocks carry acontentattribute, but only the latter's is a rich-text attribute.When this happens, we can encounter a fatal error in
mergeRichTextUpdateby assuming a primitive string is aY.Textinstance.How?
instanceofcheck.Testing Instructions
Testing Instructions for Keyboard
n/a