paywall-upgrade-button.tsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import OLButton from '@/shared/components/ol/ol-button'
  2. import getMeta from '@/utils/meta'
  3. import { useEditorAnalytics } from '@/shared/hooks/use-editor-analytics'
  4. import { useCallback } from 'react'
  5. import { useTranslation } from 'react-i18next'
  6. export default function PaywallUpgradeButton({
  7. referrer,
  8. paywallType,
  9. className,
  10. }: {
  11. referrer: string
  12. paywallType: string
  13. className?: string
  14. }) {
  15. const { t } = useTranslation()
  16. const { sendEvent } = useEditorAnalytics()
  17. const user = getMeta('ol-user')
  18. const handleClick = useCallback(() => {
  19. sendEvent('paywall-click', {
  20. upgradeType: user.hasPaidSubscription ? 'add-on' : 'standalone',
  21. 'paywall-type': paywallType,
  22. })
  23. }, [sendEvent, user.hasPaidSubscription, paywallType])
  24. return (
  25. <OLButton
  26. variant="premium"
  27. size="sm"
  28. href={`/user/subscription/choose-your-plan?itm_referrer=${referrer}&itm_campaign=${paywallType}`}
  29. target="_blank"
  30. rel="noreferrer"
  31. className={className}
  32. onClick={handleClick}
  33. >
  34. {t('upgrade')}
  35. </OLButton>
  36. )
  37. }