woocommerce-paypal-payments/modules/ppcp-axo-block/resources/js/components/Watermark/WatermarkManager.js

48 lines
1.4 KiB
JavaScript

import { useEffect } from '@wordpress/element';
import { useSelect } from '@wordpress/data';
import { STORE_NAME } from '../../stores/axoStore';
import {
createWatermarkContainer,
removeWatermark,
updateWatermarkContent,
} from './utils';
/**
* Manages the lifecycle and content of the AXO watermark.
*
* @param {Object} props
* @param {Object} props.fastlaneSdk - The Fastlane SDK instance.
* @return {null} This component doesn't render any visible elements.
*/
const WatermarkManager = ( { fastlaneSdk } ) => {
// Select relevant states from the AXO store
const isAxoActive = useSelect( ( select ) =>
select( STORE_NAME ).getIsAxoActive()
);
const isAxoScriptLoaded = useSelect( ( select ) =>
select( STORE_NAME ).getIsAxoScriptLoaded()
);
useEffect( () => {
if ( isAxoActive || ( ! isAxoActive && ! isAxoScriptLoaded ) ) {
// Create watermark container and update content when AXO is active or loading
createWatermarkContainer();
updateWatermarkContent( {
isAxoActive,
isAxoScriptLoaded,
fastlaneSdk,
} );
} else {
// Remove watermark when AXO is inactive and not loading
removeWatermark();
}
// Cleanup function to remove watermark on unmount
return removeWatermark;
}, [ fastlaneSdk, isAxoActive, isAxoScriptLoaded ] );
// This component doesn't render anything directly
return null;
};
export default WatermarkManager;