[TV] Now Playing analytics - #5770
Conversation
Reviewing PR #5770
|
|
Claude finished @sztomek's task in 5m 45s —— View job Review: PR #5770 — [TV] Now Playing analytics
Solid, well-scoped analytics PR. No correctness bugs found — I traced the two areas most likely to break and both hold up. Everything below is a parity question, a readability suggestion, or a test-coverage note. Details are in 5 inline comments. What I verifiedThe I also checked the hosting for spurious pairs: tabs render inside a The effect events are wired at the right point. No no-op events from the UI either — Findings
None of these block merge. #1 is the only one that could affect the data itself; the rest are polish. Not verifiedI could not run the test suite or |
c071478 to
b06170b
Compare
0d2e801 to
5939bc3
Compare
|
Claude finished @sztomek's task in 1m 21s —— View job Review: new commit since last review (
|
b06170b to
4b494a4
Compare
5939bc3 to
e814bc2
Compare
|
Claude finished @sztomek's task in 47s —— View job Review: no new content since last reviewThis synchronize is a rebase — the commits were rewritten ( Non-blocking
|
e814bc2 to
6fc31e8
Compare
|
Claude finished @sztomek's task in 1m 32s —— View job Review: new commit since last review (
|

Description
Brings the Android TV Now Playing / Player screen to analytics parity with the Apple TV app (
Pocket Casts TV App/UI/Player/NowPlayingView.swift). The TV player previously fired no screen analytics.Apple TV is the source of truth for which events fire and when; each maps to the existing generated EventHorizon Kotlin class (no schema change — all events already include the
androidplatform).Stacked on #5769 ([TV] Search analytics) — review/merge that first.
Events
player_shownplayer_dismissedplayback_effect_speed_changedplayback_effect_volume_boost_toggledplayback_effect_trim_silence_amount_changedplayer_shown/player_dismissedare bare events, wired via aDisposableEffectinTvNowPlayingScreenkeyed on theLoadedstate (placed above the podcast-details early-return so opening a podcast from the player does not over-fire). InjectsEventHorizonintoTvNowPlayingViewModel.playbackManager.trackPlaybackEvent(SourceView.PLAYER_PLAYBACK_EFFECTS)helper — the same path the phone'sEffectsFragmentuses — which suppliessource+content_type(audio/video);settings(global vs local) is derived frompodcast.overrideGlobalEffects. They fire from the singleupdateEffectschoke point, only after the effect is actually applied.Fixes PCDROID-725 https://linear.app/a8c/issue/PCDROID-725/now-playing-analytics
Notable parity decisions
playback_effect_trim_silence_toggledis deliberately not fired — the TV UI collapses on/off and amount into one trim-mode list, and Apple TV does the same: itsNowPlayingView.swiftmenu (built fromTrimSilenceAmount.allCases, which includesoff) only ever firestrimSilenceAmountChanged, nevertrimSilenceToggled. TV enable/disable therefore shows up asamount_changedwithamount=off/non-off, on both platforms — queries built on thetoggledevent won't see TV traffic.Testing Instructions
./gradlew :tv:installDebug.adb logcat -s Analytics) for the 🔵 events (debug builds log every EventHorizon event).player_shown; leaving it (switch tabs) logsplayer_dismissed.playback_effect_speed_changed; toggling volume boost logsplayback_effect_volume_boost_toggled; picking a trim mode logsplayback_effect_trim_silence_amount_changed— each withsource=player_playback_effects, the rightcontent_type, andsettings=global(orlocalfor a podcast with custom effects).Screenshots or Screencast
Checklist
./gradlew spotlessApply)modules/services/localization— n/a, no new stringsandroidplatform