Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions projects/plugins/jetpack/changelog/fix-payment-blocks-nudge
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Significance: patch
Type: bugfix

Payment blocks: Fixed the upgrade nudge for Payment blocks
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ import {
getRequiredPlan,
getUsableBlockProps,
} from '@automattic/jetpack-shared-extension-utils';
import { useBlockProps } from '@wordpress/block-editor';
import { createHigherOrderComponent } from '@wordpress/compose';
import { useSelect } from '@wordpress/data';
import { render, useState, useEffect, useMemo, useContext } from '@wordpress/element';
import { useState, useEffect, useMemo, useContext } from '@wordpress/element';
import { PaidBlockContext, PaidBlockProvider } from './components';
import UpgradePlanBanner from './upgrade-plan-banner';
import { trackUpgradeBannerImpression, trackUpgradeClickEvent } from './utils';
Expand Down Expand Up @@ -70,50 +71,28 @@ export default createHigherOrderComponent(
setAttributes( { shouldDisplayFrontendBanner: ! hasParentBanner } );
}, [ setAttributes, hasParentBanner ] );

useEffect( () => {
const block = document.querySelector( `.wp-block[data-block="${ clientId }"]` );
if ( ! block ) {
return;
}

let upgradeBannerContainer = document.querySelector(
`.wp-block[data-block="${ clientId }"] > .jetpack-block-upgrade-banner-container`
);
if ( ! upgradeBannerContainer ) {
upgradeBannerContainer = document.createElement( 'div' );
upgradeBannerContainer.classList.add( 'jetpack-block-upgrade-banner-container' );
block.prepend( upgradeBannerContainer );
}

render(
<UpgradePlanBanner
className={ `is-${ name.replace( /\//, '-' ) }-paid-block` }
title={ null }
align={ attributes?.align }
visible={ isBannerVisible }
description={ usableBlocksProps?.description }
requiredPlan={ requiredPlan }
context={ bannerContext }
onRedirect={ () => trackUpgradeClickEvent( trackEventData ) }
/>,
upgradeBannerContainer
);
}, [
attributes?.align,
clientId,
isBannerVisible,
name,
requiredPlan,
trackEventData,
usableBlocksProps?.description,
] );
const blockProps = useBlockProps();

return (
<PaidBlockProvider
onBannerVisibilityChange={ setIsVisible }
hasParentBanner={ isBannerVisible }
>
<BlockEdit { ...props } />
<div { ...blockProps }>
Comment thread
mmtr marked this conversation as resolved.
Resolved
<div className="jetpack-block-upgrade-banner-container">
Comment thread
mmtr marked this conversation as resolved.
Resolved
<UpgradePlanBanner
className={ `is-${ name.replace( /\//, '-' ) }-paid-block` }
title={ null }
align={ attributes?.align }
visible={ isBannerVisible }
description={ usableBlocksProps?.description }
requiredPlan={ requiredPlan }
context={ bannerContext }
onRedirect={ () => trackUpgradeClickEvent( trackEventData ) }
/>
</div>
<BlockEdit { ...props } />
</div>
</PaidBlockProvider>
);
},
Expand Down