Fallback to session details if player has no active track.

Provides better handling if end of book has been reached.
This commit is contained in:
Adam Traeger 2025-03-13 22:50:30 -05:00
parent c72f7cddc8
commit 78d7ba69df
No known key found for this signature in database
GPG key ID: 136E380CBA630639

View file

@ -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
}