From 711b07996324f5dae514e5edf62ed5e6acbdd01a Mon Sep 17 00:00:00 2001 From: ronaldheft Date: Mon, 29 Aug 2022 20:39:55 -0400 Subject: [PATCH] Fix: Extra timeListening when player initializes --- ios/App/Shared/player/AudioPlayer.swift | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/ios/App/Shared/player/AudioPlayer.swift b/ios/App/Shared/player/AudioPlayer.swift index 65d6ed2a..356d7bda 100644 --- a/ios/App/Shared/player/AudioPlayer.swift +++ b/ios/App/Shared/player/AudioPlayer.swift @@ -145,9 +145,11 @@ class AudioPlayer: NSObject { let seconds = 0.5 * (self.rate > 0 ? self.rate : 1.0) let time = CMTime(seconds: Double(seconds), preferredTimescale: timeScale) self.timeObserverToken = self.audioPlayer.addPeriodicTimeObserver(forInterval: time, queue: self.queue) { [weak self] time in + let isPlaying = self?.isPlaying() ?? false + Task { // Let the player update the current playback positions - await PlayerProgress.shared.syncFromPlayer(currentTime: time.seconds, includesPlayProgress: true, isStopping: false) + await PlayerProgress.shared.syncFromPlayer(currentTime: time.seconds, includesPlayProgress: isPlaying, isStopping: false) } // Update the sleep time, if set @@ -257,8 +259,7 @@ class AudioPlayer: NSObject { self.stopPausedTimer() Task { - let isPlaying = self.status > 0 - await PlayerProgress.shared.syncFromPlayer(currentTime: self.getCurrentTime(), includesPlayProgress: isPlaying, isStopping: false) + await PlayerProgress.shared.syncFromPlayer(currentTime: self.getCurrentTime(), includesPlayProgress: self.isPlaying(), isStopping: false) } self.audioPlayer.play() @@ -278,8 +279,7 @@ class AudioPlayer: NSObject { self.audioPlayer.pause() Task { - let wasPlaying = self.status > 0 - await PlayerProgress.shared.syncFromPlayer(currentTime: self.getCurrentTime(), includesPlayProgress: wasPlaying, isStopping: true) + await PlayerProgress.shared.syncFromPlayer(currentTime: self.getCurrentTime(), includesPlayProgress: self.isPlaying(), isStopping: true) } self.status = 0 @@ -495,14 +495,20 @@ class AudioPlayer: NSObject { let playbackSession = Database.shared.getPlaybackSession(id: self.sessionId)! return playbackSession.playMethod } + public func getPlaybackSessionId() -> String { return self.sessionId } + public func getDuration() -> Double { let playbackSession = Database.shared.getPlaybackSession(id: self.sessionId)! return playbackSession.duration } + public func isPlaying() -> Bool { + return self.status > 0 + } + // MARK: - Private private func createAsset(itemId:String, track:AudioTrack) -> AVAsset { let playbackSession = Database.shared.getPlaybackSession(id: self.sessionId)!