start-free-trial-button.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import React, { useCallback } from 'react'
  2. import { useTranslation } from 'react-i18next'
  3. import { Button } from 'react-bootstrap'
  4. import PropTypes from 'prop-types'
  5. import * as eventTracking from '../../infrastructure/event-tracking'
  6. export default function StartFreeTrialButton({
  7. buttonStyle = 'info',
  8. children,
  9. classes = {},
  10. setStartedFreeTrial,
  11. source,
  12. }) {
  13. const { t } = useTranslation()
  14. const handleClick = useCallback(
  15. event => {
  16. event.preventDefault()
  17. eventTracking.send('subscription-funnel', 'upgraded-free-trial', source)
  18. const planCode = 'collaborator_free_trial_7_days'
  19. eventTracking.sendMB('subscription-start-trial', {
  20. source,
  21. plan: planCode,
  22. })
  23. if (setStartedFreeTrial) {
  24. setStartedFreeTrial(true)
  25. }
  26. const params = new URLSearchParams({
  27. planCode,
  28. ssp: 'true',
  29. itm_campaign: source,
  30. })
  31. window.open(`/user/subscription/new?${params}`)
  32. },
  33. [setStartedFreeTrial, source]
  34. )
  35. return (
  36. <Button
  37. bsStyle={buttonStyle}
  38. onClick={handleClick}
  39. className={classes.button}
  40. >
  41. {children || t('start_free_trial')}
  42. </Button>
  43. )
  44. }
  45. StartFreeTrialButton.propTypes = {
  46. buttonStyle: PropTypes.string,
  47. children: PropTypes.any,
  48. classes: PropTypes.shape({
  49. button: PropTypes.string.isRequired,
  50. }),
  51. setStartedFreeTrial: PropTypes.func,
  52. source: PropTypes.string.isRequired,
  53. }