diff --git a/packages/common/src/models/Analytics.ts b/packages/common/src/models/Analytics.ts index 9124731e916..53696c19d42 100644 --- a/packages/common/src/models/Analytics.ts +++ b/packages/common/src/models/Analytics.ts @@ -159,6 +159,7 @@ export enum Name { TRACK_UPLOAD_FOLLOW_GATED = 'Track Upload: Follow Gated', TRACK_UPLOAD_TIP_GATED = 'Track Upload: Tip Gated', TRACK_UPLOAD_USDC_GATED = 'Track Upload: USDC Gated', + TRACK_UPLOAD_CLICK_USDC_WAITLIST_LINK = 'Track Upload: Clicked USDC Waitlist Link', // Gated Track Listen LISTEN_GATED = 'Listen: Gated', @@ -858,6 +859,10 @@ type TrackUploadUSDCGated = { kind: 'tracks' } +type TrackUploadClickUSDCWaitListLink = { + eventName: Name.TRACK_UPLOAD_CLICK_USDC_WAITLIST_LINK +} + // Unlocked Gated Tracks type CollectibleGatedTrackUnlocked = { eventName: Name.COLLECTIBLE_GATED_TRACK_UNLOCKED @@ -1826,6 +1831,7 @@ export type AllTrackingEvents = | TrackUploadFollowGated | TrackUploadTipGated | TrackUploadUSDCGated + | TrackUploadClickUSDCWaitListLink | TrackUploadSuccess | TrackUploadFailure | TrackUploadRejected diff --git a/packages/mobile/src/screens/edit-track-screen/fields/AccessAndSaleField/PremiumRadioField/PremiumRadioField.tsx b/packages/mobile/src/screens/edit-track-screen/fields/AccessAndSaleField/PremiumRadioField/PremiumRadioField.tsx index b4bc6bc80b5..6049e28141e 100644 --- a/packages/mobile/src/screens/edit-track-screen/fields/AccessAndSaleField/PremiumRadioField/PremiumRadioField.tsx +++ b/packages/mobile/src/screens/edit-track-screen/fields/AccessAndSaleField/PremiumRadioField/PremiumRadioField.tsx @@ -1,5 +1,6 @@ import { useCallback, useEffect } from 'react' +import { Name } from '@audius/common' import { Dimensions, View } from 'react-native' import IconCart from 'app/assets/images/iconCart.svg' @@ -7,6 +8,7 @@ import IconStars from 'app/assets/images/iconStars.svg' import { Link, Tag, Text } from 'app/components/core' import { HelpCallout } from 'app/components/help-callout/HelpCallout' import { useSetTrackAvailabilityFields } from 'app/hooks/useSetTrackAvailabilityFields' +import { make, track } from 'app/services/analytics' import { makeStyles } from 'app/styles' import { useColor } from 'app/utils/theme' @@ -77,6 +79,10 @@ export const PremiumRadioField = (props: PremiumRadioFieldProps) => { const { set: setTrackAvailabilityFields } = useSetTrackAvailabilityFields() const styles = useStyles() + const handlePressWaitListLink = useCallback(() => { + track(make({ eventName: Name.TRACK_UPLOAD_CLICK_USDC_WAITLIST_LINK })) + }, []) + const secondary = useColor('secondary') const neutral = useColor('neutral') const neutralLight4 = useColor('neutralLight4') @@ -109,12 +115,12 @@ export const PremiumRadioField = (props: PremiumRadioFieldProps) => { return ( {messages.waitlist} - + {messages.join} ) - }, [styles.link, styles.waitlist]) + }, [styles.link, styles.waitlist, handlePressWaitListLink]) return ( diff --git a/packages/web/src/pages/upload-page/fields/availability/usdc-purchase-gated/UsdcPurchaseGatedRadioField.tsx b/packages/web/src/pages/upload-page/fields/availability/usdc-purchase-gated/UsdcPurchaseGatedRadioField.tsx index a82d4614c24..53ae3144a03 100644 --- a/packages/web/src/pages/upload-page/fields/availability/usdc-purchase-gated/UsdcPurchaseGatedRadioField.tsx +++ b/packages/web/src/pages/upload-page/fields/availability/usdc-purchase-gated/UsdcPurchaseGatedRadioField.tsx @@ -1,5 +1,8 @@ +import { useCallback } from 'react' + import { FeatureFlags, + Name, PremiumConditions, TrackAvailabilityType, isPremiumContentCollectibleGated, @@ -11,6 +14,7 @@ import { IconCart, IconStars } from '@audius/stems' import { ExternalLink } from 'components/link' import { ModalRadioItem } from 'components/modal-radio/ModalRadioItem' import { useFlag } from 'hooks/useRemoteConfig' +import { make, track } from 'services/analytics' import { UsdcPurchaseFields } from './UsdcPurchaseFields' import styles from './UsdcPurchaseGatedRadioField.module.css' @@ -40,6 +44,10 @@ export const UsdcPurchaseGatedRadioField = ( const { isRemix, isUpload, initialPremiumConditions, isInitiallyUnlisted } = props + const handleClickWaitListLink = useCallback(() => { + track(make({ eventName: Name.TRACK_UPLOAD_CLICK_USDC_WAITLIST_LINK })) + }, []) + const { isEnabled: isUsdcUploadEnabled } = useFlag( FeatureFlags.USDC_PURCHASES_UPLOAD ) @@ -66,6 +74,7 @@ export const UsdcPurchaseGatedRadioField = (
{messages.waitlist}