From ec4647e2bcaa126cffa3482946375b56a37c2a8a Mon Sep 17 00:00:00 2001 From: ronaldheft Date: Tue, 16 Aug 2022 21:36:09 -0400 Subject: [PATCH] Handle server success --- ios/App/Shared/player/PlayerHandler.swift | 14 +++++++++++++- ios/App/Shared/util/ApiClient.swift | 4 ++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/ios/App/Shared/player/PlayerHandler.swift b/ios/App/Shared/player/PlayerHandler.swift index 43022486..a2863b3b 100644 --- a/ios/App/Shared/player/PlayerHandler.swift +++ b/ios/App/Shared/player/PlayerHandler.swift @@ -261,7 +261,8 @@ class PlayerHandler { 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 + + func handleSuccess(_ success: Bool) { // Remove old sessions after they synced with the server let session = try! Realm().resolve(sessionRef) if success && !(session?.isActiveSession ?? false) { @@ -269,6 +270,17 @@ class PlayerHandler { session?.delete() } } + + if session.isLocal { + ApiClient.reportLocalPlaybackProgress(session.freeze()) { success in + handleSuccess(success) + } + } else { + let playbackReport = PlaybackReport(currentTime: session.currentTime, duration: session.duration, timeListened: session.timeListening) + ApiClient.reportPlaybackProgress(report: playbackReport, sessionId: session.id) { success in + handleSuccess(success) + } + } } } } diff --git a/ios/App/Shared/util/ApiClient.swift b/ios/App/Shared/util/ApiClient.swift index 913d2be4..5af89085 100644 --- a/ios/App/Shared/util/ApiClient.swift +++ b/ios/App/Shared/util/ApiClient.swift @@ -162,8 +162,8 @@ class ApiClient { } } - public static func reportPlaybackProgress(report: PlaybackReport, sessionId: String) { - try? postResource(endpoint: "api/session/\(sessionId)/sync", parameters: report.asDictionary().mapValues({ value in "\(value)" }), callback: nil) + public static func reportPlaybackProgress(report: PlaybackReport, sessionId: String, callback: @escaping (_ success: Bool) -> Void) { + try? postResource(endpoint: "api/session/\(sessionId)/sync", parameters: report.asDictionary().mapValues({ value in "\(value)" }), callback: callback) } public static func reportLocalPlaybackProgress(_ session: PlaybackSession, callback: @escaping (_ success: Bool) -> Void) {