diff --git a/Account/Sources/Account/LocalAccount/LocalAccountDelegate.swift b/Account/Sources/Account/LocalAccount/LocalAccountDelegate.swift index 93300f99b..5528e5fad 100644 --- a/Account/Sources/Account/LocalAccount/LocalAccountDelegate.swift +++ b/Account/Sources/Account/LocalAccount/LocalAccountDelegate.swift @@ -221,15 +221,16 @@ extension LocalAccountDelegate: FeedDownloaderDelegate { func feedDownloader(_: FeedDownloader, requestCompletedForFeedURL feedURL: URL, response: URLResponse?, data: Data?, error: Error?) { - guard let account, let feed = account.existingFeed(urlString: feedURL.absoluteString) else { + if let error { + logger.debug("Error downloading: \(feedURL) - \(error)") return } - if let error { - logger.debug("Error downloading \(feed.url) - \(error)") + guard let response, let data, !data.isEmpty else { + logger.debug("Missing response and/or data: \(feedURL)") return } - guard let response, let data, !data.isEmpty else { + guard let account, let feed = account.existingFeed(urlString: feedURL.absoluteString) else { return } @@ -238,11 +239,12 @@ extension LocalAccountDelegate: FeedDownloaderDelegate { func feedDownloader(_: FeedDownloader, requestCanceledForFeedURL feedURL: URL, response: URLResponse?, data: Data?, error: Error?, reason: FeedDownloader.CancellationReason) { - // nothing to do + logger.debug("Request canceled: \(feedURL) - \(reason)") } func feedDownloaderSessionDidComplete(_: FeedDownloader) { + logger.debug("Feed downloader session did complete") account?.metadata.lastArticleFetchEndTime = Date() } diff --git a/FeedDownloader/Sources/FeedDownloader/FeedDownloader.swift b/FeedDownloader/Sources/FeedDownloader/FeedDownloader.swift index d8ec8e9a9..4ef0a20a4 100644 --- a/FeedDownloader/Sources/FeedDownloader/FeedDownloader.swift +++ b/FeedDownloader/Sources/FeedDownloader/FeedDownloader.swift @@ -25,11 +25,25 @@ public protocol FeedDownloaderDelegate: AnyObject { /// Use this to download feeds directly (local and iCloud accounts). @MainActor public final class FeedDownloader { - public enum CancellationReason { + public enum CancellationReason: CustomStringConvertible { + case suspended case notFeedData case unexpectedResponse case notModified + + public var description: String { + switch self { + case .suspended: + return "suspended" + case .notFeedData: + return "notFeedData" + case .unexpectedResponse: + return "unexpectedResponse" + case .notModified: + return "notModified" + } + } } public weak var delegate: FeedDownloaderDelegate?