From 10f2da9e90b4051f3b7045c61b68a1a07139c785 Mon Sep 17 00:00:00 2001 From: ronaldheft Date: Tue, 16 Aug 2022 21:14:33 -0400 Subject: [PATCH] Fix progress syncing --- ios/App/App/plugins/AbsAudioPlayer.swift | 4 +++- ios/App/Shared/player/AudioPlayer.swift | 4 ++++ ios/App/Shared/player/PlayerHandler.swift | 14 +++++++++----- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/ios/App/App/plugins/AbsAudioPlayer.swift b/ios/App/App/plugins/AbsAudioPlayer.swift index 7a3288bb..967fd13d 100644 --- a/ios/App/App/plugins/AbsAudioPlayer.swift +++ b/ios/App/App/plugins/AbsAudioPlayer.swift @@ -130,7 +130,9 @@ public class AbsAudioPlayer: CAPPlugin { @objc func sendMetadata() { self.notifyListeners("onPlayingUpdate", data: [ "value": !PlayerHandler.paused ]) - self.notifyListeners("onMetadata", data: PlayerHandler.getMetdata()) + if let metadata = PlayerHandler.getMetdata() { + self.notifyListeners("onMetadata", data: metadata) + } } @objc func sendPlaybackClosedEvent() { self.notifyListeners("onPlaybackClosed", data: [ "value": true ]) diff --git a/ios/App/Shared/player/AudioPlayer.swift b/ios/App/Shared/player/AudioPlayer.swift index 81765b13..3ba2da62 100644 --- a/ios/App/Shared/player/AudioPlayer.swift +++ b/ios/App/Shared/player/AudioPlayer.swift @@ -107,6 +107,10 @@ class AudioPlayer: NSObject { NotificationCenter.default.post(name: NSNotification.Name(PlayerEvents.closed.rawValue), object: nil) } + func isInitialized() -> Bool { + return self.status != -1 + } + func getItemIndexForTime(time:Double) -> Int { let playbackSession = Database.shared.getPlaybackSession(id: self.sessionId)! for index in 0.. [String: Any] { + public static func getMetdata() -> [String: Any]? { + guard let player = player else { return nil } + guard player.isInitialized() else { return nil } + DispatchQueue.main.async { syncProgress() } return [ - "duration": player?.getDuration() ?? 0, - "currentTime": player?.getCurrentTime() ?? 0, + "duration": player.getDuration(), + "currentTime": player.getCurrentTime(), "playerState": !paused, - "currentRate": player?.rate ?? 0, + "currentRate": player.rate, ] } @@ -199,6 +202,7 @@ class PlayerHandler { public static func syncProgress() { guard let player = player else { return } + guard player.isInitialized() else { return } guard let session = getPlaybackSession() else { return } // Get current time @@ -254,7 +258,7 @@ class PlayerHandler { guard Connectivity.isConnectedToInternet else { return } DispatchQueue.global(qos: .utility).async { let realm = try! Realm() - for session in realm.objects(PlaybackSession.self) { + for session in realm.objects(PlaybackSession.self).where({ $0.serverConnectionConfigId == Store.serverConfig?.id }) { NSLog("Sending sessionId(\(session.id)) to server") let sessionRef = ThreadSafeReference(to: session) ApiClient.reportLocalPlaybackProgress(session.freeze()) { success in