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

Block registration: Fix shared defaults between different blocks #20565

Merged
merged 3 commits into from Mar 4, 2020

Conversation

@marekhrabe
Copy link
Contributor

marekhrabe commented Mar 1, 2020

Description

I've added a failing test for the issue described. The severity of this bug shows as it also breaks 4 other unrelated tests, despite the filter being auto-removed and limited to a specific block.

I have addressed it by calling cloneDeep on the object DEFAULT_BLOCK_TYPE_SETTINGS before it is applied as a default in registerBlockType.

Tests are all green now, including the new one testing mutations of default attributes.

Fixes #20524

How has this been tested?

  • added a new unit test npm run test-unit -- packages/blocks/src/api/test/registration.js

Types of changes

Bug fix (non-breaking change which fixes an issue)

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
@github-actions

This comment has been minimized.

Copy link

github-actions bot commented Mar 1, 2020

Size Change: -381 B (0%)

Total Size: 865 kB

Filename Size Change
build/block-editor/index.js 105 kB +131 B (0%)
build/block-editor/style-rtl.css 10.5 kB -24 B (0%)
build/block-editor/style.css 10.5 kB -23 B (0%)
build/block-library/editor-rtl.css 7.4 kB -263 B (3%)
build/block-library/editor.css 7.4 kB -264 B (3%)
build/block-library/index.js 116 kB +22 B (0%)
build/block-library/style-rtl.css 7.51 kB +17 B (0%)
build/block-library/style.css 7.51 kB +17 B (0%)
build/blocks/index.js 57.6 kB -10 B (0%)
build/components/style-rtl.css 15.6 kB +36 B (0%)
build/components/style.css 15.5 kB +38 B (0%)
build/edit-post/index.js 90.9 kB -2 B (0%)
build/edit-post/style-rtl.css 8.53 kB -13 B (0%)
build/edit-post/style.css 8.53 kB -12 B (0%)
build/editor/index.js 44.6 kB -13 B (0%)
build/editor/style-rtl.css 3.98 kB -25 B (0%)
build/editor/style.css 3.98 kB -25 B (0%)
build/rich-text/index.js 14.3 kB +32 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.01 kB 0 B
build/annotations/index.js 3.43 kB 0 B
build/api-fetch/index.js 3.39 kB 0 B
build/autop/index.js 2.58 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/index.js 6.02 kB 0 B
build/block-directory/style-rtl.css 760 B 0 B
build/block-directory/style.css 760 B 0 B
build/block-library/theme-rtl.css 669 B 0 B
build/block-library/theme.css 671 B 0 B
build/block-serialization-default-parser/index.js 1.65 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/components/index.js 191 kB 0 B
build/compose/index.js 5.76 kB 0 B
build/core-data/index.js 10.5 kB 0 B
build/data-controls/index.js 1.03 kB 0 B
build/data/index.js 8.22 kB 0 B
build/date/index.js 5.37 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 568 B 0 B
build/dom/index.js 3.06 kB 0 B
build/edit-site/index.js 4.63 kB 0 B
build/edit-site/style-rtl.css 2.51 kB 0 B
build/edit-site/style.css 2.51 kB 0 B
build/edit-widgets/index.js 4.42 kB 0 B
build/edit-widgets/style-rtl.css 2.59 kB 0 B
build/edit-widgets/style.css 2.58 kB 0 B
build/editor/editor-styles-rtl.css 325 B 0 B
build/editor/editor-styles.css 327 B 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.6 kB 0 B
build/format-library/style-rtl.css 502 B 0 B
build/format-library/style.css 502 B 0 B
build/hooks/index.js 1.92 kB 0 B
build/html-entities/index.js 622 B 0 B
build/i18n/index.js 3.48 kB 0 B
build/is-shallow-equal/index.js 710 B 0 B
build/keyboard-shortcuts/index.js 2.3 kB 0 B
build/keycodes/index.js 1.68 kB 0 B
build/list-reusable-blocks/index.js 2.99 kB 0 B
build/list-reusable-blocks/style-rtl.css 226 B 0 B
build/list-reusable-blocks/style.css 226 B 0 B
build/media-utils/index.js 4.85 kB 0 B
build/notices/index.js 1.57 kB 0 B
build/nux/index.js 3.02 kB 0 B
build/nux/style-rtl.css 616 B 0 B
build/nux/style.css 613 B 0 B
build/plugins/index.js 2.54 kB 0 B
build/primitives/index.js 1.49 kB 0 B
build/priority-queue/index.js 780 B 0 B
build/redux-routine/index.js 2.84 kB 0 B
build/server-side-render/index.js 2.54 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.27 kB 0 B
build/url/index.js 4 kB 0 B
build/viewport/index.js 1.61 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.18 kB 0 B

compressed-size-action

@marekhrabe marekhrabe self-assigned this Mar 2, 2020
@@ -154,7 +162,7 @@ export function unstable__bootstrapServerSideBlockDefinitions( definitions ) {
export function registerBlockType( name, settings ) {
settings = {
name,
...DEFAULT_BLOCK_TYPE_SETTINGS,
...cloneDeep( DEFAULT_BLOCK_TYPE_SETTINGS ),

This comment has been minimized.

Copy link
@youknowriad

youknowriad Mar 2, 2020

Contributor

I'm not sure clone deep is the best solution here, especially for the icon. Could shallow cloning the settings and attributes work? I'm also not against moving it to the function.

This comment has been minimized.

Copy link
@marekhrabe

marekhrabe Mar 3, 2020

Author Contributor

I've tried moving it directly to the function. Otherwise, we would need to clone deeply some keys of the defaults object and I think that might get unnecessary complex for relatively simple operation.

Copy link
Contributor

youknowriad left a comment

LGTM

@gziolo any opinion here?

@gziolo

This comment has been minimized.

Copy link
Member

gziolo commented Mar 4, 2020

Looks good 👍

@gziolo gziolo merged commit 34493ca into master Mar 4, 2020
3 checks passed
3 checks passed
build
Details
pull-request-automation
Details
Travis CI - Pull Request Build Passed
Details
@gziolo gziolo deleted the fix/shared-defaults-for-blocks branch Mar 4, 2020
@github-actions github-actions bot added this to the Gutenberg 7.7 milestone Mar 4, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

3 participants
You can’t perform that action at this time.