Skip to content

Conversation

@ntsekouras
Copy link
Contributor

@ntsekouras ntsekouras commented Oct 15, 2020

Description

Fixes: #26137

If a post type template contains a legacy block, like an embed for a specific platform (e.g. core-embed/wordpress-tv), the editor will crash with a WSOD when trying to create a new post.

Steps to reproduce exist in issue.

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR.

@ntsekouras ntsekouras self-assigned this Oct 15, 2020
@github-actions
Copy link

github-actions bot commented Oct 15, 2020

Size Change: +1.32 kB (0%)

Total Size: 1.19 MB

Filename Size Change
build/block-directory/index.js 8.6 kB -1 B
build/block-editor/index.js 130 kB -26 B (0%)
build/block-editor/style-rtl.css 11 kB +8 B (0%)
build/block-editor/style.css 10.9 kB +8 B (0%)
build/block-library/index.js 142 kB -248 B (0%)
build/block-serialization-default-parser/index.js 1.77 kB -3 B (0%)
build/blocks/index.js 47.6 kB +30 B (0%)
build/components/index.js 169 kB +74 B (0%)
build/core-data/index.js 12.1 kB +26 B (0%)
build/data/index.js 8.63 kB -2 B (0%)
build/edit-post/index.js 306 kB +280 B (0%)
build/edit-post/style-rtl.css 6.37 kB +64 B (1%)
build/edit-post/style.css 6.35 kB +64 B (1%)
build/edit-site/index.js 21.6 kB +499 B (2%)
build/edit-site/style-rtl.css 3.8 kB +37 B (0%)
build/edit-site/style.css 3.81 kB +34 B (0%)
build/edit-widgets/index.js 21.6 kB +130 B (0%)
build/edit-widgets/style-rtl.css 3.09 kB +117 B (3%)
build/edit-widgets/style.css 3.09 kB +117 B (3%)
build/editor/index.js 42.6 kB +99 B (0%)
build/primitives/index.js 1.35 kB +11 B (0%)
build/redux-routine/index.js 2.85 kB +1 B
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.54 kB 0 B
build/api-fetch/index.js 3.35 kB 0 B
build/autop/index.js 2.72 kB 0 B
build/blob/index.js 668 B 0 B
build/block-directory/style-rtl.css 943 B 0 B
build/block-directory/style.css 942 B 0 B
build/block-library/editor-rtl.css 8.65 kB 0 B
build/block-library/editor.css 8.65 kB 0 B
build/block-library/style-rtl.css 7.71 kB 0 B
build/block-library/style.css 7.71 kB 0 B
build/block-library/theme-rtl.css 741 B 0 B
build/block-library/theme.css 741 B 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/components/style-rtl.css 15.4 kB 0 B
build/components/style.css 15.4 kB 0 B
build/compose/index.js 9.63 kB 0 B
build/data-controls/index.js 684 B 0 B
build/date/index.js 31.9 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 569 B 0 B
build/dom/index.js 4.43 kB 0 B
build/edit-navigation/index.js 10.6 kB 0 B
build/edit-navigation/style-rtl.css 868 B 0 B
build/edit-navigation/style.css 871 B 0 B
build/editor/editor-styles-rtl.css 480 B 0 B
build/editor/editor-styles.css 482 B 0 B
build/editor/style-rtl.css 3.85 kB 0 B
build/editor/style.css 3.84 kB 0 B
build/element/index.js 4.45 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/index.js 7.49 kB 0 B
build/format-library/style-rtl.css 547 B 0 B
build/format-library/style.css 548 B 0 B
build/hooks/index.js 1.74 kB 0 B
build/html-entities/index.js 622 B 0 B
build/i18n/index.js 3.54 kB 0 B
build/is-shallow-equal/index.js 709 B 0 B
build/keyboard-shortcuts/index.js 2.39 kB 0 B
build/keycodes/index.js 1.85 kB 0 B
build/list-reusable-blocks/index.js 3.02 kB 0 B
build/list-reusable-blocks/style-rtl.css 476 B 0 B
build/list-reusable-blocks/style.css 476 B 0 B
build/media-utils/index.js 5.12 kB 0 B
build/notices/index.js 1.69 kB 0 B
build/nux/index.js 3.27 kB 0 B
build/nux/style-rtl.css 671 B 0 B
build/nux/style.css 668 B 0 B
build/plugins/index.js 2.44 kB 0 B
build/priority-queue/index.js 789 B 0 B
build/reusable-blocks/index.js 3.04 kB 0 B
build/rich-text/index.js 13 kB 0 B
build/server-side-render/index.js 2.6 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.24 kB 0 B
build/url/index.js 4.07 kB 0 B
build/viewport/index.js 1.75 kB 0 B
build/warning/index.js 1.13 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

Copy link
Contributor

@mcsf mcsf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for looking at this. The general approach seems right.

@mcsf
Copy link
Contributor

mcsf commented Oct 15, 2020

I wonder if we could tweak one of the E2E tests that we have, e.g. cpt-locking.php, to include deprecated block types.

Now, this only fixes the issue of templates not having their blocks converted from deprecated types (e.g. core/text, core/embed-wordpress). It does not fix the issue of the white screen of death (WSOD) triggered whenever a block in a template is not known. This is something to track in an issue, if there isn't one already.

@mcsf mcsf changed the title WIP: Try for handling CPTs templates Block templates: Recognize and convert old or derivative block types to their canonical form Oct 15, 2020
@mcsf mcsf added [Feature] Templates API Related to API powering block template functionality in the Site Editor [Feature] Parsing Related to efforts to improving the parsing of a string of data and converting it into a different f [Type] Bug An existing feature does not function as intended labels Oct 15, 2020
@ntsekouras
Copy link
Contributor Author

Thanks for reviewing @mcsf - very valuable feedback as always 💯

I wonder if we could tweak one of the E2E tests that we have, e.g. cpt-locking.php, to include deprecated block types.

The general approach seems right.

Since I wanted to get feedback about the approach I'll improve the implementation and add tests for sure and address the other feedback as well.

Now, this only fixes the issue of templates not having their blocks converted from deprecated types (e.g. core/text, core/embed-wordpress). It does not fix the issue of the white screen of death (WSOD) triggered whenever a block in a template is not known. This is something to track in an issue, if there isn't one already.

There was a relevant issue about handling the error better here: #21718, which I closed as there was a better error msg and handled earlier. This still results in WSOD though.

I think it's a separate issue and I'm not really sure what the best approach of this would be to be honest.

@mcsf
Copy link
Contributor

mcsf commented Oct 15, 2020

There was a relevant issue about handling the error better here: #21718, which I closed as there was a better error msg and handled earlier. This still results in WSOD though.

I think it's a separate issue and I'm not really sure what the best approach of this would be to be honest.

Either reopen that issue or make a more specific one — both are fine.

I'm not really sure what the best approach [is]

The editor is already equipped to handle unknown blocks if they are loaded from post_content. We just need to make sure this is also somehow applied to CPT templates. See getUnregisteredTypeHandlerName, setUnregisteredTypeHandlerName and core/missing.

@ntsekouras
Copy link
Contributor Author

Either reopen that issue or make a more specific one — both are fine.

I'll open a new one. Thanks for the context too!

@mcsf
Copy link
Contributor

mcsf commented Oct 15, 2020

The other thing is looking at how we're using ErrorBoundary and figuring out why we got a full WSOD instead of a "The editor has encountered an unexpected error" message.

Copy link
Member

@gziolo gziolo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice one, I only skimmed but it's definitely a good direction 👍

@ntsekouras ntsekouras merged commit 681d4a8 into master Oct 16, 2020
@ntsekouras ntsekouras deleted the try/fix-derivative-blocks-in-cpt-templates branch October 16, 2020 14:48
@github-actions github-actions bot added this to the Gutenberg 9.2 milestone Oct 16, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[Feature] Parsing Related to efforts to improving the parsing of a string of data and converting it into a different f [Feature] Templates API Related to API powering block template functionality in the Site Editor [Type] Bug An existing feature does not function as intended

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Derivative embed blocks in post type templates should be recognized and converted on the fly when creating a new post

4 participants