Handle server success

This commit is contained in:
ronaldheft 2022-08-16 21:36:09 -04:00
parent 10f2da9e90
commit ec4647e2bc
2 changed files with 15 additions and 3 deletions

View file

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

View file

@ -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) {