From 5df7ec4fee9109b8e793203fea15e46d0fd97120 Mon Sep 17 00:00:00 2001 From: Kerry Liu Date: Wed, 24 Feb 2021 13:46:34 -0800 Subject: [PATCH] Temporarily pull in unstable__bootstrapServerSideBlockDefinitions for easier testing --- packages/blocks/src/api/registration.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/packages/blocks/src/api/registration.js b/packages/blocks/src/api/registration.js index af0dd733cf7410..c0153a703785ba 100644 --- a/packages/blocks/src/api/registration.js +++ b/packages/blocks/src/api/registration.js @@ -160,6 +160,23 @@ export const serverSideBlockDefinitions = {}; // eslint-disable-next-line camelcase export function unstable__bootstrapServerSideBlockDefinitions( definitions ) { for ( const blockName of Object.keys( definitions ) ) { + // Don't overwrite if already set. It covers the case when metadata + // was initialized from the server. + if ( serverSideBlockDefinitions[ blockName ] ) { + // We still need to polyfill `apiVersion` for WordPress version + // lower than 5.7. If it isn't present in the definition shared + // from the server, we try to fallback to the definition passed. + // @see https://github.com/WordPress/gutenberg/pull/29279 + if ( + serverSideBlockDefinitions[ blockName ].apiVersion === + undefined && + definitions[ blockName ].apiVersion + ) { + serverSideBlockDefinitions[ blockName ].apiVersion = + definitions[ blockName ].apiVersion; + } + continue; + } serverSideBlockDefinitions[ blockName ] = mapKeys( pickBy( definitions[ blockName ], ( value ) => ! isNil( value ) ), ( value, key ) => camelCase( key )