2022-04-12 14:28:47 +02:00
|
|
|
//
|
|
|
|
// PlaybackSession.swift
|
|
|
|
// App
|
|
|
|
//
|
|
|
|
// Created by Rasmus Krämer on 12.04.22.
|
|
|
|
//
|
|
|
|
|
|
|
|
import Foundation
|
2022-04-22 20:31:45 -04:00
|
|
|
|
2022-08-12 23:11:09 -04:00
|
|
|
struct PlaybackSession: Codable {
|
2022-04-12 14:28:47 +02:00
|
|
|
var id: String
|
|
|
|
var userId: String?
|
|
|
|
var libraryItemId: String?
|
|
|
|
var episodeId: String?
|
|
|
|
var mediaType: String
|
|
|
|
// var mediaMetadata: MediaTypeMetadata - It is not implemented in android?
|
|
|
|
var chapters: [Chapter]
|
|
|
|
var displayTitle: String?
|
|
|
|
var displayAuthor: String?
|
|
|
|
var coverPath: String?
|
|
|
|
var duration: Double
|
|
|
|
var playMethod: Int
|
2022-04-14 11:54:53 +02:00
|
|
|
var startedAt: Double?
|
|
|
|
var updatedAt: Double?
|
2022-04-12 14:28:47 +02:00
|
|
|
var timeListening: Double
|
|
|
|
var audioTracks: [AudioTrack]
|
|
|
|
var currentTime: Double
|
2022-07-31 13:33:36 -04:00
|
|
|
var libraryItem: LibraryItem?
|
2022-08-11 18:34:59 -04:00
|
|
|
var localLibraryItem: LocalLibraryItem?
|
2022-04-12 14:28:47 +02:00
|
|
|
var serverConnectionConfigId: String?
|
|
|
|
var serverAddress: String?
|
2022-08-11 20:38:51 -04:00
|
|
|
|
2022-08-12 23:11:09 -04:00
|
|
|
var isLocal: Bool { self.localLibraryItem != nil }
|
|
|
|
|
|
|
|
var localMediaProgressId: String {
|
|
|
|
if let episodeId = episodeId {
|
|
|
|
return "\(localLibraryItem!.id)-\(episodeId)"
|
|
|
|
} else {
|
|
|
|
return localLibraryItem!.id
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-08-11 20:38:51 -04:00
|
|
|
var totalDuration: Double {
|
|
|
|
var total = 0.0
|
|
|
|
self.audioTracks.forEach { total += $0.duration }
|
|
|
|
return total
|
|
|
|
}
|
2022-08-12 23:11:09 -04:00
|
|
|
|
2022-08-11 20:38:51 -04:00
|
|
|
var progress: Double { self.currentTime / self.totalDuration }
|
2022-04-12 14:28:47 +02:00
|
|
|
}
|