start-free-trial-button.tsx 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { MouseEventHandler, useCallback, useEffect } from 'react'
  2. import { useTranslation } from 'react-i18next'
  3. import { Button } from 'react-bootstrap'
  4. import { startFreeTrial } from '../../main/account-upgrade'
  5. import * as eventTracking from '../../infrastructure/event-tracking'
  6. type StartFreeTrialButtonProps = {
  7. source: string
  8. buttonProps?: Button.ButtonProps
  9. children?: React.ReactNode
  10. handleClick?: MouseEventHandler<Button>
  11. }
  12. export default function StartFreeTrialButton({
  13. buttonProps = {
  14. bsStyle: 'info',
  15. },
  16. children,
  17. handleClick,
  18. source,
  19. }: StartFreeTrialButtonProps) {
  20. const { t } = useTranslation()
  21. useEffect(() => {
  22. eventTracking.sendMB('paywall-prompt', {
  23. 'paywall-type': source,
  24. })
  25. }, [source])
  26. const onClick = useCallback(
  27. event => {
  28. event.preventDefault()
  29. if (handleClick) {
  30. handleClick(event)
  31. }
  32. startFreeTrial(source)
  33. },
  34. [handleClick, source]
  35. )
  36. return (
  37. <Button {...buttonProps} onClick={onClick}>
  38. {children || t('start_free_trial')}
  39. </Button>
  40. )
  41. }