From b76e834be18f9119b22a45c6904b6b054d84a99f Mon Sep 17 00:00:00 2001 From: lance chant <13349722+lancechant@users.noreply.github.com> Date: Sun, 6 Apr 2025 10:24:33 +0200 Subject: [PATCH] feat: adding reportPlaybackStart which allows tracking to work well (#636) --- app/(auth)/player/direct-player.tsx | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/app/(auth)/player/direct-player.tsx b/app/(auth)/player/direct-player.tsx index 0c286537..7848a597 100644 --- a/app/(auth)/player/direct-player.tsx +++ b/app/(auth)/player/direct-player.tsx @@ -24,6 +24,7 @@ import { type MediaSourceInfo, PlaybackOrder, type PlaybackProgressInfo, + PlaybackStartInfo, RepeatMode, } from "@jellyfin/sdk/lib/generated-client"; import { @@ -201,13 +202,29 @@ export default function page() { fetchStreamData(); }, [itemId, mediaSourceId, bitrateValue, api, item, user?.Id]); + useEffect(() => { + if (!stream) return; + + const reportPlaybackStart = async () => { + await getPlaystateApi(api!).reportPlaybackStart({ + playbackStartInfo: currentPlayStateInfo() as PlaybackStartInfo, + }); + }; + + reportPlaybackStart(); + }, [stream]); + const togglePlay = async () => { lightHapticFeedback(); setIsPlaying(!isPlaying); if (isPlaying) { await videoRef.current?.pause(); + reportPlaybackStopped(); } else { videoRef.current?.play(); + await getPlaystateApi(api!).reportPlaybackStart({ + playbackStartInfo: currentPlayStateInfo() as PlaybackStartInfo, + }); } };