From 78d7ba69dfb008715bf0e468a80c376675c7ce98 Mon Sep 17 00:00:00 2001 From: Adam Traeger Date: Thu, 13 Mar 2025 22:50:30 -0500 Subject: [PATCH] Fallback to session details if player has no active track. Provides better handling if end of book has been reached. --- ios/App/Shared/player/AudioPlayer.swift | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ios/App/Shared/player/AudioPlayer.swift b/ios/App/Shared/player/AudioPlayer.swift index 8231fbd9..dda8e55e 100644 --- a/ios/App/Shared/player/AudioPlayer.swift +++ b/ios/App/Shared/player/AudioPlayer.swift @@ -487,9 +487,17 @@ class AudioPlayer: NSObject { public func getCurrentTime() -> Double? { guard let playbackSession = self.getPlaybackSession() else { return nil } - let currentTrackTime = self.audioPlayer.currentTime().seconds let audioTrack = playbackSession.audioTracks[currentTrackIndex] let startOffset = audioTrack.startOffset ?? 0.0 + + // if the currentTrackTime is not a number, then track isn't loaded + // fall back on session. + var currentTrackTime = self.audioPlayer.currentTime().seconds + if currentTrackTime.isNaN { + if let currentChapter = playbackSession.getCurrentChapter() { + currentTrackTime = currentChapter.getRelativeChapterCurrentTime(sessionCurrentTime:playbackSession.currentTime) + } + } return startOffset + currentTrackTime }