Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update improve backward compatibility for deprecated settings #25738

Conversation

jorgefilipecosta
Copy link
Member

This PR improves backward compatibility for deprecated settings.
It now follows this model:

  • We remove the settings passed from the server on the Gutenberg plugin. We keep passing them during WordPress 5.6.
  • We keep default values for the settings on the block editor client side.
  • We change the back-compatibility model of useEditorFeature. Currently, if the equivalent old setting exists, it uses it. Now given that the old setting will exist all the time because it has a default value, we use the new setting if it exists and fallback to the old if it does not exist.

How has this been tested?

I verified the default settings appear on the playground.
I verified the normal post editor still used settings from theme.json

@github-actions
Copy link

github-actions bot commented Sep 30, 2020

Size Change: +944 B (0%)

Total Size: 1.19 MB

Filename Size Change
build/block-editor/index.js 130 kB +944 B (0%)
ℹ️ 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/index.js 8.55 kB 0 B
build/block-directory/style-rtl.css 943 B 0 B
build/block-directory/style.css 942 B 0 B
build/block-editor/style-rtl.css 10.9 kB 0 B
build/block-editor/style.css 10.9 kB 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/index.js 145 kB 0 B
build/block-library/style-rtl.css 7.66 kB 0 B
build/block-library/style.css 7.65 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-default-parser/index.js 1.78 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/blocks/index.js 47.6 kB 0 B
build/components/index.js 169 kB 0 B
build/components/style-rtl.css 15.5 kB 0 B
build/components/style.css 15.5 kB 0 B
build/compose/index.js 9.43 kB 0 B
build/core-data/index.js 12 kB 0 B
build/data-controls/index.js 685 B 0 B
build/data/index.js 8.6 kB 0 B
build/date/index.js 31.9 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 568 B 0 B
build/dom/index.js 4.42 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/edit-post/index.js 306 kB 0 B
build/edit-post/style-rtl.css 6.29 kB 0 B
build/edit-post/style.css 6.28 kB 0 B
build/edit-site/index.js 21 kB 0 B
build/edit-site/style-rtl.css 3.73 kB 0 B
build/edit-site/style.css 3.73 kB 0 B
build/edit-widgets/index.js 21.2 kB 0 B
build/edit-widgets/style-rtl.css 3.02 kB 0 B
build/edit-widgets/style.css 3.02 kB 0 B
build/editor/editor-styles-rtl.css 492 B 0 B
build/editor/editor-styles.css 493 B 0 B
build/editor/index.js 45.5 kB 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 734 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 621 B 0 B
build/i18n/index.js 3.54 kB 0 B
build/is-shallow-equal/index.js 710 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/primitives/index.js 1.34 kB 0 B
build/priority-queue/index.js 790 B 0 B
build/redux-routine/index.js 2.85 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.06 kB 0 B
build/viewport/index.js 1.74 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

@youknowriad
Copy link
Contributor

It seems once we do that folks, should have the possibility to upgrade to the new API useEditorFeature. So I think it's probably better to wait for 5.6 before landing this as useEditorFeature is still experimental.

@jorgefilipecosta jorgefilipecosta force-pushed the update/improve-backcompatibility-for-deprecated-settings branch from 393ccf9 to ff854cd Compare October 9, 2020 14:02
@jorgefilipecosta
Copy link
Member Author

This PR is a must-have for 5.6 because without the PR on 5.6 on themes that don't explicitly set a color palette, or gradients, or font sizes the defaults will not appear. As now the defaults are passed by the global styles mechanism that will not be part of 5.6.

@oandregal
Copy link
Member

Fixes #25652

@jorgefilipecosta jorgefilipecosta force-pushed the update/improve-backcompatibility-for-deprecated-settings branch from ff854cd to 17f8811 Compare October 9, 2020 16:39
@jorgefilipecosta jorgefilipecosta merged commit 942f19d into master Oct 9, 2020
@jorgefilipecosta jorgefilipecosta deleted the update/improve-backcompatibility-for-deprecated-settings branch October 9, 2020 17:13
@github-actions github-actions bot added this to the Gutenberg 9.2 milestone Oct 9, 2020
@noahtallen
Copy link
Member

I hate to say it, but this actually broke backwards compatibility (at least in the way we were using it).

In order to enable custom line height for all themes, we were filtering editor settings to add the enableCustomLineHeight key. One would think that the deprecatedFlags feature would handle that, but unfortunately, since the default (i.e. global) value for custom line height is false, the code will return false. It would only return the deprecated flag if the default value was undefined, which is not the case for line height.

ockham pushed a commit to Automattic/wp-calypso that referenced this pull request Oct 27, 2020
In WordPress/gutenberg#25738, Gutenberg moved the lineHeight setting to a new place in the settings object. It also introduced a (sort of?) bug where even though it has a mechanism to use the deprecated location for the setting, it is never used because the default value is returned instead.

This simply updates our existing filter to enable line height in the new location if the new location exists. I left the old setting in place as well, just in case we still need to support older gutenberg versions.
@oandregal
Copy link
Member

oandregal commented Oct 28, 2020

Hi @noahtallen I believe this is a bug we need to fix. However, it seems to me that the bug is not in the client's useEditorHook but in how we source the existing settings in the server. See #26537 for details.

Essentially, we need to make this work for the following two use cases:

  • WP core without the Gutenberg plugin => will use the existing features (eg: enableCustomLineHeight).
  • WP core with the Gutenberg plugin => will use the new experimental features that can be enabled per context (global, paragraph, etc). In this case, we need to retrofit the existing settings into the new structure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants