From 999d434fe909963bad7eb90507662a4608732872 Mon Sep 17 00:00:00 2001 From: ronaldheft Date: Thu, 11 Aug 2022 12:58:47 -0400 Subject: [PATCH] Fix download item not clearing for podcasts --- ios/App/App/plugins/AbsDownloader.swift | 2 +- ios/App/Shared/models/DataClasses.swift | 40 +++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/ios/App/App/plugins/AbsDownloader.swift b/ios/App/App/plugins/AbsDownloader.swift index 9220f744..b9e86c00 100644 --- a/ios/App/App/plugins/AbsDownloader.swift +++ b/ios/App/App/plugins/AbsDownloader.swift @@ -142,7 +142,7 @@ public class AbsDownloader: CAPPlugin, URLSessionDownloadDelegate { private func handleDownloadTaskCompleteFromDownloadItem(_ downloadItem: DownloadItem) { var statusNotification = [String: Any]() - statusNotification["libraryItemId"] = downloadItem.libraryItemId + statusNotification["libraryItemId"] = downloadItem.id if ( downloadItem.didDownloadSuccessfully() ) { ApiClient.getLibraryItemWithProgress(libraryItemId: downloadItem.libraryItemId!, episodeId: downloadItem.episodeId) { libraryItem in diff --git a/ios/App/Shared/models/DataClasses.swift b/ios/App/Shared/models/DataClasses.swift index b525264f..fb86b667 100644 --- a/ios/App/Shared/models/DataClasses.swift +++ b/ios/App/Shared/models/DataClasses.swift @@ -130,7 +130,7 @@ struct PodcastEpisode: Realmable, Codable { var audioTrack: AudioTrack? var duration: Double? var size: Int? -// var serverEpisodeId: String? + var serverEpisodeId: String { self.id } init() { id = "" @@ -140,6 +140,10 @@ struct PodcastEpisode: Realmable, Codable { size = 0 } + static func ignoredProperties() -> [String] { + ["serverEpisodeId"] + } + private enum CodingKeys : String, CodingKey { case id, index, @@ -151,7 +155,39 @@ struct PodcastEpisode: Realmable, Codable { audioFile, audioTrack, duration, - size + size, + serverEpisodeId + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + id = try values.decode(String.self, forKey: .id) + index = try? values.decode(Int.self, forKey: .index) + episode = try? values.decode(String.self, forKey: .episode) + episodeType = try? values.decode(String.self, forKey: .episodeType) + title = try values.decode(String.self, forKey: .title) + subtitle = try? values.decode(String.self, forKey: .subtitle) + desc = try? values.decode(String.self, forKey: .desc) + audioFile = try? values.decode(AudioFile.self, forKey: .audioFile) + audioTrack = try? values.decode(AudioTrack.self, forKey: .audioTrack) + duration = try? values.decode(Double.self, forKey: .duration) + size = try? values.decode(Int.self, forKey: .size) + } + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(id, forKey: .id) + try container.encode(index, forKey: .index) + try container.encode(episode, forKey: .episode) + try container.encode(episodeType, forKey: .episodeType) + try container.encode(title, forKey: .title) + try container.encode(subtitle, forKey: .subtitle) + try container.encode(desc, forKey: .desc) + try container.encode(audioFile, forKey: .audioFile) + try container.encode(audioTrack, forKey: .audioTrack) + try container.encode(duration, forKey: .duration) + try container.encode(size, forKey: .size) + try container.encode(serverEpisodeId, forKey: .serverEpisodeId) } }