Fix missing metadata

This commit is contained in:
ronaldheft 2022-08-17 20:42:45 -04:00
parent f655f89c49
commit d3172ece9b
3 changed files with 8 additions and 4 deletions

View file

@ -11,7 +11,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
// Override point for customization after application launch. // Override point for customization after application launch.
let configuration = Realm.Configuration( let configuration = Realm.Configuration(
schemaVersion: 3, schemaVersion: 4,
migrationBlock: { migration, oldSchemaVersion in migrationBlock: { migration, oldSchemaVersion in
if (oldSchemaVersion < 1) { if (oldSchemaVersion < 1) {
NSLog("Realm schema version was \(oldSchemaVersion)") NSLog("Realm schema version was \(oldSchemaVersion)")

View file

@ -14,7 +14,7 @@ class PlaybackSession: Object, Codable, Deletable {
@Persisted var libraryItemId: String? @Persisted var libraryItemId: String?
@Persisted var episodeId: String? @Persisted var episodeId: String?
@Persisted var mediaType: String = "" @Persisted var mediaType: String = ""
// var mediaMetadata: MediaTypeMetadata - It is not implemented in android? @Persisted var mediaMetadata: Metadata?
@Persisted var chapters = List<Chapter>() @Persisted var chapters = List<Chapter>()
@Persisted var displayTitle: String? @Persisted var displayTitle: String?
@Persisted var displayAuthor: String? @Persisted var displayAuthor: String?
@ -67,12 +67,13 @@ class PlaybackSession: Object, Codable, Deletable {
var progress: Double { self.currentTime / self.totalDuration } var progress: Double { self.currentTime / self.totalDuration }
internal init(id: String, userId: String? = nil, libraryItemId: String? = nil, episodeId: String? = nil, mediaType: String, chapters: List<Chapter> = List<Chapter>(), displayTitle: String? = nil, displayAuthor: String? = nil, coverPath: String? = nil, duration: Double, playMethod: Int, startedAt: Double? = nil, updatedAt: Double? = nil, timeListening: Double, audioTracks: List<AudioTrack> = List<AudioTrack>(), currentTime: Double, libraryItem: LibraryItem? = nil, localLibraryItem: LocalLibraryItem? = nil, serverConnectionConfigId: String? = nil, serverAddress: String? = nil) { internal init(id: String, userId: String? = nil, libraryItemId: String? = nil, episodeId: String? = nil, mediaType: String, mediaMetadata: Metadata?, chapters: List<Chapter> = List<Chapter>(), displayTitle: String? = nil, displayAuthor: String? = nil, coverPath: String? = nil, duration: Double, playMethod: Int, startedAt: Double? = nil, updatedAt: Double? = nil, timeListening: Double, audioTracks: List<AudioTrack> = List<AudioTrack>(), currentTime: Double, libraryItem: LibraryItem? = nil, localLibraryItem: LocalLibraryItem? = nil, serverConnectionConfigId: String? = nil, serverAddress: String? = nil) {
self.id = id self.id = id
self.userId = userId self.userId = userId
self.libraryItemId = libraryItemId self.libraryItemId = libraryItemId
self.episodeId = episodeId self.episodeId = episodeId
self.mediaType = mediaType self.mediaType = mediaType
self.mediaMetadata = mediaMetadata
self.chapters = chapters self.chapters = chapters
self.displayTitle = displayTitle self.displayTitle = displayTitle
self.displayAuthor = displayAuthor self.displayAuthor = displayAuthor
@ -92,7 +93,7 @@ class PlaybackSession: Object, Codable, Deletable {
} }
private enum CodingKeys : String, CodingKey { private enum CodingKeys : String, CodingKey {
case id, userId, libraryItemId, episodeId, mediaType, chapters, displayTitle, displayAuthor, coverPath, duration, playMethod, mediaPlayer, deviceInfo, startedAt, updatedAt, timeListening, audioTracks, currentTime, libraryItem, localLibraryItem, serverConnectionConfigId, serverAddress, isLocal, localMediaProgressId case id, userId, libraryItemId, episodeId, mediaType, mediaMetadata, chapters, displayTitle, displayAuthor, coverPath, duration, playMethod, mediaPlayer, deviceInfo, startedAt, updatedAt, timeListening, audioTracks, currentTime, libraryItem, localLibraryItem, serverConnectionConfigId, serverAddress, isLocal, localMediaProgressId
} }
override init() {} override init() {}
@ -105,6 +106,7 @@ class PlaybackSession: Object, Codable, Deletable {
libraryItemId = try values.decodeIfPresent(String.self, forKey: .libraryItemId) libraryItemId = try values.decodeIfPresent(String.self, forKey: .libraryItemId)
episodeId = try values.decodeIfPresent(String.self, forKey: .episodeId) episodeId = try values.decodeIfPresent(String.self, forKey: .episodeId)
mediaType = try values.decode(String.self, forKey: .mediaType) mediaType = try values.decode(String.self, forKey: .mediaType)
mediaMetadata = try values.decodeIfPresent(Metadata.self, forKey: .mediaMetadata)
if let chapterList = try values.decodeIfPresent([Chapter].self, forKey: .chapters) { if let chapterList = try values.decodeIfPresent([Chapter].self, forKey: .chapters) {
chapters.append(objectsIn: chapterList) chapters.append(objectsIn: chapterList)
} }
@ -134,6 +136,7 @@ class PlaybackSession: Object, Codable, Deletable {
try container.encode(libraryItemId, forKey: .libraryItemId) try container.encode(libraryItemId, forKey: .libraryItemId)
try container.encode(episodeId, forKey: .episodeId) try container.encode(episodeId, forKey: .episodeId)
try container.encode(mediaType, forKey: .mediaType) try container.encode(mediaType, forKey: .mediaType)
try container.encode(mediaMetadata, forKey: .mediaMetadata)
try container.encode(Array(chapters), forKey: .chapters) try container.encode(Array(chapters), forKey: .chapters)
try container.encode(displayTitle, forKey: .displayTitle) try container.encode(displayTitle, forKey: .displayTitle)
try container.encode(displayAuthor, forKey: .displayAuthor) try container.encode(displayAuthor, forKey: .displayAuthor)

View file

@ -179,6 +179,7 @@ extension LocalLibraryItem {
libraryItemId: self.libraryItemId, libraryItemId: self.libraryItemId,
episodeId: episode?.serverEpisodeId, episodeId: episode?.serverEpisodeId,
mediaType: self.mediaType, mediaType: self.mediaType,
mediaMetadata: mediaMetadata,
chapters: chapters, chapters: chapters,
displayTitle: mediaMetadata?.title, displayTitle: mediaMetadata?.title,
displayAuthor: authorName, displayAuthor: authorName,