/** * External dependencies */ import { Button } from '@wordpress/components'; import apiFetch from '@wordpress/api-fetch'; import { recordEvent } from '@woocommerce/tracks'; /** * Internal dependencies */ import Notice from '~/marketplace/components/notice/notice'; import { getAdminSetting } from '~/utils/admin-settings'; export interface SubscriptionsExpiredExpiringNoticeProps { type: string; } export interface TrackEvents { shown: string; clicked: string; dismissed: string; } export default function SubscriptionsExpiredExpiringNotice( props: SubscriptionsExpiredExpiringNoticeProps ): JSX.Element | null { const { type } = props; const wccomSettings = getAdminSetting( 'wccomHelper', {} ); const eventKeys: Record< string, TrackEvents > = { 'woo-subscription-expired-notice': { shown: 'woo_subscription_expired_notice_in_marketplace_shown', clicked: 'woo_subscription_expired_notice_in_marketplace_clicked', dismissed: 'woo_subscription_expired_notice_in_marketplace_dismissed', }, 'woo-subscription-expiring-notice': { shown: 'woo_subscription_expiring_notice_in_marketplace_shown', clicked: 'woo_subscription_expiring_notice_in_marketplace_clicked', dismissed: 'woo_subscription_expiring_notice_in_marketplace_dismissed', }, }; let notice = null; let notice_id = ''; const dismiss_notice_nonce = wccomSettings?.dismissNoticeNonce || ''; if ( type === 'expired' ) { notice = wccomSettings?.subscription_expired_notice || {}; notice_id = 'woo-subscription-expired-notice'; } else if ( type === 'expiring' ) { notice = wccomSettings?.subscription_expiring_notice || {}; notice_id = 'woo-subscription-expiring-notice'; } else { return null; } if ( ! wccomSettings.isConnected || ! notice?.description ) { return null; } const handleClose = () => { recordEvent( eventKeys[ notice_id ].dismissed ); const data = { notice_id, dismiss_notice_nonce }; apiFetch( { path: `/wc-admin/notice/dismiss`, method: 'POST', data, } ); }; function handleClick() { recordEvent( eventKeys[ notice_id ].clicked ); } function handleLoad() { recordEvent( eventKeys[ notice_id ].shown ); } return ( ); }