import { useCallback, useEffect } from 'react' import { startFreeTrial } from '@/main/account-upgrade' import * as eventTracking from '../../infrastructure/event-tracking' import OLButton from '@/shared/components/ol/ol-button' type StartFreeTrialButtonProps = { source: string children: React.ReactNode variant?: string buttonProps?: React.ComponentProps handleClick?: React.ComponentProps['onClick'] segmentation?: eventTracking.Segmentation extraSearchParams?: Record } export default function StartFreeTrialButton({ buttonProps = { variant: 'secondary', }, children, handleClick, source, variant, segmentation, extraSearchParams, }: StartFreeTrialButtonProps) { useEffect(() => { const eventSegmentation: { [key: string]: unknown } = { 'paywall-type': source, ...segmentation, } if (variant) { eventSegmentation.variant = variant } eventTracking.sendMB('paywall-prompt', eventSegmentation) }, [source, variant, segmentation]) const onClick = useCallback( (event: React.MouseEvent) => { event.preventDefault() let shouldNavigate = true if (handleClick) { handleClick(event) if (event.isPropagationStopped()) { shouldNavigate = false } } startFreeTrial( source, variant, segmentation, extraSearchParams, shouldNavigate ) }, [handleClick, source, variant, segmentation, extraSearchParams] ) return ( {children} ) }