Skip to content

Commit

Permalink
Pass updated context as context prop
Browse files Browse the repository at this point in the history
  • Loading branch information
SantosGuillamot committed Sep 24, 2024
1 parent 842f67d commit f25282d
Showing 1 changed file with 19 additions and 23 deletions.
42 changes: 19 additions & 23 deletions packages/block-editor/src/hooks/use-bindings-attributes.js
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ export const withBlockBindingSupport = createHigherOrderComponent(
const sources = useSelect( ( select ) =>
unlock( select( blocksStore ) ).getAllBlockBindingsSources()
);
const { name, clientId } = props;
const { name, clientId, context } = props;
const hasParentPattern = !! props.context[ 'pattern/overrides' ];
const hasPatternOverridesDefaultBinding =
props.attributes.metadata?.bindings?.[ DEFAULT_ATTRIBUTE ]
Expand All @@ -121,6 +121,7 @@ export const withBlockBindingSupport = createHigherOrderComponent(
// used purposely here to ensure `boundAttributes` is updated whenever
// there are attribute updates.
// `source.getValues` may also call a selector via `registry.select`.
const updatedContext = { ...context };
const boundAttributes = useSelect( () => {
if ( ! blockBindings ) {
return;
Expand All @@ -139,6 +140,11 @@ export const withBlockBindingSupport = createHigherOrderComponent(
continue;
}

// Populate context.
for ( const key of source.usesContext || [] ) {
updatedContext[ key ] = blockContext[ key ];
}

blockBindingsBySource.set( source, {
...blockBindingsBySource.get( source ),
[ attributeName ]: {
Expand All @@ -149,15 +155,6 @@ export const withBlockBindingSupport = createHigherOrderComponent(

if ( blockBindingsBySource.size ) {
for ( const [ source, bindings ] of blockBindingsBySource ) {
// Populate context.
const context = {};

if ( source.usesContext?.length ) {
for ( const key of source.usesContext ) {
context[ key ] = blockContext[ key ];
}
}

// Get values in batch if the source supports it.
let values = {};
if ( ! source.getValues ) {
Expand All @@ -168,7 +165,7 @@ export const withBlockBindingSupport = createHigherOrderComponent(
} else {
values = source.getValues( {
registry,
context,
context: updatedContext,
clientId,
bindings,
} );
Expand All @@ -190,7 +187,14 @@ export const withBlockBindingSupport = createHigherOrderComponent(
}

return attributes;
}, [ blockBindings, name, clientId, blockContext, registry, sources ] );
}, [
blockBindings,
name,
clientId,
updatedContext,
registry,
sources,
] );

const { setAttributes } = props;

Expand Down Expand Up @@ -236,18 +240,9 @@ export const withBlockBindingSupport = createHigherOrderComponent(
source,
bindings,
] of blockBindingsBySource ) {
// Populate context.
const context = {};

if ( source.usesContext?.length ) {
for ( const key of source.usesContext ) {
context[ key ] = blockContext[ key ];
}
}

source.setValues( {
registry,
context,
context: updatedContext,
clientId,
bindings,
} );
Expand Down Expand Up @@ -277,7 +272,7 @@ export const withBlockBindingSupport = createHigherOrderComponent(
blockBindings,
name,
clientId,
blockContext,
updatedContext,
setAttributes,
sources,
hasPatternOverridesDefaultBinding,
Expand All @@ -291,6 +286,7 @@ export const withBlockBindingSupport = createHigherOrderComponent(
{ ...props }
attributes={ { ...props.attributes, ...boundAttributes } }
setAttributes={ _setAttributes }
context={ updatedContext }
/>
</>
);
Expand Down

0 comments on commit f25282d

Please sign in to comment.