overleaf/services/web/frontend/js/shared/components/start-free-trial-button.tsx
Alexandre Bourdin 4f340b0ed7 Merge pull request #8894 from overleaf/ab-cleanup-start-free-trial-button
[web] Cleanup StartFreeTrialButton component

GitOrigin-RevId: 67538882ff5a3389d2134ec6e4833431aa43f8e6
2022-07-26 08:04:21 +00:00

48 lines
1.1 KiB
TypeScript

import { MouseEventHandler, useCallback, useEffect } from 'react'
import { useTranslation } from 'react-i18next'
import { Button } from 'react-bootstrap'
import { startFreeTrial } from '../../main/account-upgrade'
import * as eventTracking from '../../infrastructure/event-tracking'
type StartFreeTrialButtonProps = {
source: string
buttonProps?: Button.ButtonProps
children?: React.ReactNode
handleClick?: MouseEventHandler<Button>
}
export default function StartFreeTrialButton({
buttonProps = {
bsStyle: 'info',
},
children,
handleClick,
source,
}: StartFreeTrialButtonProps) {
const { t } = useTranslation()
useEffect(() => {
eventTracking.sendMB('paywall-prompt', {
'paywall-type': source,
})
}, [source])
const onClick = useCallback(
event => {
event.preventDefault()
if (handleClick) {
handleClick(event)
}
startFreeTrial(source)
},
[handleClick, source]
)
return (
<Button {...buttonProps} onClick={onClick}>
{children || t('start_free_trial')}
</Button>
)
}