| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import { useCallback, useEffect } from 'react'
- import { useTranslation } from 'react-i18next'
- import { Button } from 'react-bootstrap'
- import PropTypes from 'prop-types'
- import * as eventTracking from '../../infrastructure/event-tracking'
- export default function StartFreeTrialButton({
- buttonStyle = 'info',
- children,
- classes = {},
- setStartedFreeTrial,
- source,
- }) {
- const { t } = useTranslation()
- useEffect(() => {
- eventTracking.sendMB('paywall-prompt', { 'paywall-type': source })
- }, [source])
- const handleClick = useCallback(
- event => {
- event.preventDefault()
- eventTracking.send('subscription-funnel', 'upgraded-free-trial', source)
- eventTracking.sendMB('paywall-click', { 'paywall-type': source })
- if (setStartedFreeTrial) {
- setStartedFreeTrial(true)
- }
- const params = new URLSearchParams({
- planCode: 'collaborator_free_trial_7_days',
- ssp: 'true',
- itm_campaign: source,
- })
- window.open(`/user/subscription/new?${params}`)
- },
- [setStartedFreeTrial, source]
- )
- return (
- <Button
- bsStyle={buttonStyle}
- onClick={handleClick}
- className={classes.button}
- >
- {children || t('start_free_trial')}
- </Button>
- )
- }
- StartFreeTrialButton.propTypes = {
- buttonStyle: PropTypes.string,
- children: PropTypes.any,
- classes: PropTypes.shape({
- button: PropTypes.string.isRequired,
- }),
- setStartedFreeTrial: PropTypes.func,
- source: PropTypes.string.isRequired,
- }
|