From 2448b461f09344da1d6e116effaf4a8e79f69293 Mon Sep 17 00:00:00 2001 From: ronaldheft Date: Mon, 22 Aug 2022 18:00:37 -0400 Subject: [PATCH] Re-implement the paused timer --- ios/App/Shared/player/AudioPlayer.swift | 22 ++++++++++++++++++++++ ios/App/Shared/player/PlayerHandler.swift | 4 ---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/ios/App/Shared/player/AudioPlayer.swift b/ios/App/Shared/player/AudioPlayer.swift index b6dfd315..5f9cbc18 100644 --- a/ios/App/Shared/player/AudioPlayer.swift +++ b/ios/App/Shared/player/AudioPlayer.swift @@ -44,6 +44,8 @@ class AudioPlayer: NSObject { private var currentTrackIndex = 0 private var allPlayerItems:[AVPlayerItem] = [] + private var pausedTimer: Timer? + // MARK: - Constructor init(sessionId: String, playWhenReady: Bool = false, playbackRate: Float = 1) { self.playWhenReady = playWhenReady @@ -88,6 +90,7 @@ class AudioPlayer: NSObject { NSLog("Audioplayer ready") } deinit { + self.stopPausedTimer() self.removeSleepTimer() self.removeTimeObserver() self.queueObserver?.invalidate() @@ -200,6 +203,21 @@ class AudioPlayer: NSObject { }) } + private func startPausedTimer() { + guard self.pausedTimer == nil else { return } + DispatchQueue.main.async { + self.pausedTimer = Timer.scheduledTimer(withTimeInterval: 10, repeats: true) { timer in + NSLog("PAUSE TIMER: Syncing from server") + Task { await PlayerProgress.shared.syncFromServer() } + } + } + } + + private func stopPausedTimer() { + self.pausedTimer?.invalidate() + self.pausedTimer = nil + } + // MARK: - Methods public func play(allowSeekBack: Bool = false) { if allowSeekBack { @@ -228,6 +246,8 @@ class AudioPlayer: NSObject { } lastPlayTime = Date.timeIntervalSinceReferenceDate + self.stopPausedTimer() + Task { let isPlaying = self.status > 0 await PlayerProgress.shared.syncFromPlayer(currentTime: self.getCurrentTime(), includesPlayProgress: isPlaying, isStopping: false) @@ -252,6 +272,8 @@ class AudioPlayer: NSObject { updateNowPlaying() lastPlayTime = Date.timeIntervalSinceReferenceDate + + self.startPausedTimer() } public func seek(_ to: Double, from: String) { diff --git a/ios/App/Shared/player/PlayerHandler.swift b/ios/App/Shared/player/PlayerHandler.swift index e552c6ef..ab4ea126 100644 --- a/ios/App/Shared/player/PlayerHandler.swift +++ b/ios/App/Shared/player/PlayerHandler.swift @@ -168,8 +168,4 @@ class PlayerHandler { } } } - - @objc public static func syncServerProgressDuringPause() { - Task { await PlayerProgress.shared.syncFromServer() } - } }