/**
* External dependencies
*/
import { __ } from '@wordpress/i18n';
import { useState } from '@wordpress/element';
import {
Button,
Flex,
Modal,
__experimentalText as Text, // eslint-disable-line @wordpress/no-unsafe-wp-apis --- _experimentalText unlikely to change/disappear and also used by WC Core
} from '@wordpress/components';
/**
* Internal dependencies
*/
import { useSettingsDispatch, useCreateNotice } from '../helpers/effects';
import landingConnectImage from '../../../../images/landing_connect.svg';
/**
* Modal to encourage merchants to enable Conversions API for better tracking.
*
* @param {Object} options
* @param {Function} options.onCloseModal Action to call when the modal gets closed.
* @param {Function} options.onDismiss Action to call when the modal is dismissed (optional).
*
* @return {JSX.Element} rendered component
*/
const CapiEnablementModal = ( { onCloseModal, onDismiss } ) => {
const [ isEnabling, setIsEnabling ] = useState( false );
const setAppSettings = useSettingsDispatch( true );
const createNotice = useCreateNotice();
const handleEnableCapi = async () => {
setIsEnabling( true );
try {
await setAppSettings( {
track_conversions_capi: true,
} );
createNotice(
'success',
__(
'Conversions API has been enabled successfully.',
'pinterest-for-woocommerce'
)
);
onCloseModal();
} catch ( error ) {
createNotice(
'error',
__(
'There was a problem enabling Conversions API.',
'pinterest-for-woocommerce'
)
);
} finally {
setIsEnabling( false );
}
};
const handleNotNow = () => {
// Call the dismiss callback to mark modal as dismissed
if ( onDismiss ) {
onDismiss();
}
onCloseModal();
};
return (
<Modal
title={ __(
'Improve your conversion tracking',
'pinterest-for-woocommerce'
) }
onRequestClose={ onCloseModal }
className="pinterest-for-woocommerce-capi-enablement-modal"
style={ { maxWidth: '600px' } }
>
<div
style={ {
textAlign: 'center',
marginBottom: '20px',
} }
>
<img
src={ landingConnectImage }
alt={ __(
'Pinterest connection illustration',
'pinterest-for-woocommerce'
) }
style={ {
maxWidth: '200px',
height: 'auto',
} }
/>
</div>
<Text variant="body.large">
{ __(
'Enable Pinterest Conversions API for more reliable conversion tracking. This helps you better measure ad campaign success, optimize your marketing strategies, and understand customer behavior. Benefits:',
'pinterest-for-woocommerce'
) }
</Text>
<ul
style={ {
marginLeft: '20px',
marginTop: '16px',
marginBottom: '24px',
listStyleType: 'disc',
} }
>
<li>
{ __(
'More complete conversion data',
'pinterest-for-woocommerce'
) }
</li>
<li>
{ __(
'Better campaign optimization',
'pinterest-for-woocommerce'
) }
</li>
<li>
{ __(
'Improved audience targeting',
'pinterest-for-woocommerce'
) }
</li>
<li>
{ __(
'Reduced impact from browser limitations',
'pinterest-for-woocommerce'
) }
</li>
</ul>
<Flex direction="row" justify="flex-end" gap={ 2 }>
<Button
isTertiary
onClick={ handleNotNow }
disabled={ isEnabling }
>
{ __( 'Not now', 'pinterest-for-woocommerce' ) }
</Button>
<Button
isPrimary
onClick={ handleEnableCapi }
isBusy={ isEnabling }
disabled={ isEnabling }
>
{ isEnabling
? __( 'Enabling…', 'pinterest-for-woocommerce' )
: __(
'Enable Conversions API',
'pinterest-for-woocommerce'
) }
</Button>
</Flex>
</Modal>
);
};
export default CapiEnablementModal;