diff --git a/src/utility/JellyfinApi/playback.ts b/src/utility/JellyfinApi/playback.ts index d76091a..047448d 100644 --- a/src/utility/JellyfinApi/playback.ts +++ b/src/utility/JellyfinApi/playback.ts @@ -17,11 +17,12 @@ const RepeatModeMap: Record = { */ export async function sendPlaybackEvent( path: string, - track?: Track + track?: Track, + lastPosition?: number, ) { // Extract all data from react-native-track-player const [ - activeTrack, { position }, repeatMode, volume, { state }, + activeTrack, { position: currentPosition }, repeatMode, volume, { state }, ] = await Promise.all([ track || TrackPlayer.getActiveTrack(), TrackPlayer.getProgress(), @@ -37,7 +38,7 @@ export async function sendPlaybackEvent( IsPaused: state === State.Paused, RepeatMode: RepeatModeMap[repeatMode], ShuffleMode: 'Sorted', - PositionTicks: Math.round(position * 10_000_000), + PositionTicks: Math.round((lastPosition || currentPosition) * 10_000_000), PlaybackRate: 1, PlayMethod: 'transcode', MediaSourceId: activeTrack?.backendId || null, diff --git a/src/utility/PlaybackService.ts b/src/utility/PlaybackService.ts index 1d2c56e..51a7833 100644 --- a/src/utility/PlaybackService.ts +++ b/src/utility/PlaybackService.ts @@ -45,7 +45,7 @@ export default async function() { if (settings.enablePlaybackReporting && 'track' in e) { // GUARD: End the previous track if it's about to end if (e.lastTrack) { - await sendPlaybackEvent('/Sessions/Playing/Stopped', e.lastTrack); + await sendPlaybackEvent('/Sessions/Playing/Stopped', e.lastTrack, e.lastPosition); } await sendPlaybackEvent('/Sessions/Playing', e.track);