diff --git a/.changeset/playlist-play-collection-id.md b/.changeset/playlist-play-collection-id.md new file mode 100644 index 00000000000..6f211903158 --- /dev/null +++ b/.changeset/playlist-play-collection-id.md @@ -0,0 +1,7 @@ +--- +"@audius/common": patch +"@audius/mobile": patch +"@audius/web": patch +--- + +Add collectionId to PLAYBACK_PLAY analytics events when a track is played from a playlist or album context diff --git a/packages/common/src/models/Analytics.ts b/packages/common/src/models/Analytics.ts index 6f0a3c8b89c..06d938759f0 100644 --- a/packages/common/src/models/Analytics.ts +++ b/packages/common/src/models/Analytics.ts @@ -1476,6 +1476,7 @@ type PlaybackPlay = { id?: string isPreview?: boolean source: PlaybackSource + collectionId?: string } type PlaybackPause = { eventName: Name.PLAYBACK_PAUSE diff --git a/packages/mobile/src/screens/collection-screen/CollectionScreenDetailsTile.tsx b/packages/mobile/src/screens/collection-screen/CollectionScreenDetailsTile.tsx index 4f5bb3159aa..8f1daa3b6a6 100644 --- a/packages/mobile/src/screens/collection-screen/CollectionScreenDetailsTile.tsx +++ b/packages/mobile/src/screens/collection-screen/CollectionScreenDetailsTile.tsx @@ -167,12 +167,19 @@ type CollectionScreenDetailsTileProps = { | 'contentType' > -const recordPlay = (id: Maybe, play = true) => { +const recordPlay = ( + id: Maybe, + play = true, + collectionId?: Maybe +) => { track( make({ eventName: play ? Name.PLAYBACK_PLAY : Name.PLAYBACK_PAUSE, id: String(id), - source: PlaybackSource.PLAYLIST_PAGE + source: PlaybackSource.PLAYLIST_PAGE, + ...(play && collectionId != null + ? { collectionId: String(collectionId) } + : {}) }) ) } @@ -337,7 +344,7 @@ export const CollectionScreenDetailsTile = ({ recordPlay(playingTrackId, false) } else if (!isPlaying && isQueued) { dispatch(tracksActions.play()) - recordPlay(playingTrackId) + recordPlay(playingTrackId, true, numericCollectionId) recordPlaylistPlay({ collectionId: numericCollectionId, isAlbum: !!isAlbum, @@ -347,7 +354,7 @@ export const CollectionScreenDetailsTile = ({ } else if (trackCount > 0 && firstTrack) { dispatch(queueActions.clear({})) dispatch(tracksActions.play(firstTrack.uid, { isPreview })) - recordPlay(firstTrack.id) + recordPlay(firstTrack.id, true, numericCollectionId) recordPlaylistPlay({ collectionId: numericCollectionId, isAlbum: !!isAlbum, @@ -582,13 +589,13 @@ const CollectionTrackList = ({ recordPlay(id, false) } else if (playingUid !== uid) { dispatch(tracksActions.play(uid)) - recordPlay(id) + recordPlay(id, true, numericCollectionId) } else { dispatch(tracksActions.play()) - recordPlay(id) + recordPlay(id, true, numericCollectionId) } }, - [dispatch, isPlaying, playingUid] + [dispatch, isPlaying, playingUid, numericCollectionId] ) return (