From 7745ccefabddd83b222b863e63a463212ec59733 Mon Sep 17 00:00:00 2001 From: ronaldheft Date: Sun, 21 Aug 2022 11:25:50 -0400 Subject: [PATCH 1/3] Fixes missing LocalMediaProgress for downloads without existing progress --- ios/App/App/plugins/AbsDownloader.swift | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ios/App/App/plugins/AbsDownloader.swift b/ios/App/App/plugins/AbsDownloader.swift index a5dbffa2..04dae1a6 100644 --- a/ios/App/App/plugins/AbsDownloader.swift +++ b/ios/App/App/plugins/AbsDownloader.swift @@ -186,12 +186,15 @@ public class AbsDownloader: CAPPlugin, URLSessionDownloadDelegate { statusNotification["localLibraryItem"] = try? localLibraryItem.asDictionary() + var localMediaProgress: LocalMediaProgress if let progress = libraryItem.userMediaProgress { let episode = downloadItem.media?.episodes.first(where: { $0.id == downloadItem.episodeId }) - let localMediaProgress = LocalMediaProgress(localLibraryItem: localLibraryItem!, episode: episode, progress: progress) - Database.shared.saveLocalMediaProgress(localMediaProgress) - statusNotification["localMediaProgress"] = try? localMediaProgress.asDictionary() + localMediaProgress = LocalMediaProgress(localLibraryItem: localLibraryItem!, episode: episode, progress: progress) + } else { + localMediaProgress = LocalMediaProgress.fetchOrCreateLocalMediaProgress(localMediaProgressId: nil, localLibraryItemId: localLibraryItem?.id, localEpisodeId: downloadItem.episodeId)! } + Database.shared.saveLocalMediaProgress(localMediaProgress) + statusNotification["localMediaProgress"] = try? localMediaProgress.asDictionary() self.notifyListeners("onItemDownloadComplete", data: statusNotification) } From 85382d2bb40b060ce9aa00b423eaa911e524da5c Mon Sep 17 00:00:00 2001 From: ronaldheft Date: Sun, 21 Aug 2022 11:34:23 -0400 Subject: [PATCH 2/3] Fix incorrect logic for checking if progress object exists --- ios/App/Shared/models/local/LocalMediaProgress.swift | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ios/App/Shared/models/local/LocalMediaProgress.swift b/ios/App/Shared/models/local/LocalMediaProgress.swift index 746b2e75..8962673d 100644 --- a/ios/App/Shared/models/local/LocalMediaProgress.swift +++ b/ios/App/Shared/models/local/LocalMediaProgress.swift @@ -155,8 +155,13 @@ extension LocalMediaProgress { static func fetchOrCreateLocalMediaProgress(localMediaProgressId: String?, localLibraryItemId: String?, localEpisodeId: String?) -> LocalMediaProgress? { if let localMediaProgressId = localMediaProgressId { - return Database.shared.getLocalMediaProgress(localMediaProgressId: localMediaProgressId) - } else if let localLibraryItemId = localLibraryItemId { + // Check if it existing in the database, if not, we need to create it + if let progress = Database.shared.getLocalMediaProgress(localMediaProgressId: localMediaProgressId) { + return progress + } + } + + if let localLibraryItemId = localLibraryItemId { guard let localLibraryItem = Database.shared.getLocalLibraryItem(localLibraryItemId: localLibraryItemId) else { return nil } let episode = localLibraryItem.getPodcastEpisode(episodeId: localEpisodeId) return LocalMediaProgress(localLibraryItem: localLibraryItem, episode: episode) From 232131242732e713dc853676dfbb29382444124d Mon Sep 17 00:00:00 2001 From: ronaldheft Date: Sun, 21 Aug 2022 11:34:30 -0400 Subject: [PATCH 3/3] Revert "Fixes missing LocalMediaProgress for downloads without existing progress" This reverts commit 7745ccefabddd83b222b863e63a463212ec59733. --- ios/App/App/plugins/AbsDownloader.swift | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/ios/App/App/plugins/AbsDownloader.swift b/ios/App/App/plugins/AbsDownloader.swift index 04dae1a6..a5dbffa2 100644 --- a/ios/App/App/plugins/AbsDownloader.swift +++ b/ios/App/App/plugins/AbsDownloader.swift @@ -186,15 +186,12 @@ public class AbsDownloader: CAPPlugin, URLSessionDownloadDelegate { statusNotification["localLibraryItem"] = try? localLibraryItem.asDictionary() - var localMediaProgress: LocalMediaProgress if let progress = libraryItem.userMediaProgress { let episode = downloadItem.media?.episodes.first(where: { $0.id == downloadItem.episodeId }) - localMediaProgress = LocalMediaProgress(localLibraryItem: localLibraryItem!, episode: episode, progress: progress) - } else { - localMediaProgress = LocalMediaProgress.fetchOrCreateLocalMediaProgress(localMediaProgressId: nil, localLibraryItemId: localLibraryItem?.id, localEpisodeId: downloadItem.episodeId)! + let localMediaProgress = LocalMediaProgress(localLibraryItem: localLibraryItem!, episode: episode, progress: progress) + Database.shared.saveLocalMediaProgress(localMediaProgress) + statusNotification["localMediaProgress"] = try? localMediaProgress.asDictionary() } - Database.shared.saveLocalMediaProgress(localMediaProgress) - statusNotification["localMediaProgress"] = try? localMediaProgress.asDictionary() self.notifyListeners("onItemDownloadComplete", data: statusNotification) }