From 18c986f7fab15d3330d5d028460a11e17fda9cfb Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Sun, 19 Apr 2020 13:17:24 -0500 Subject: [PATCH] Updated to the latest RSWeb --- .../LocalAccount/LocalAccountRefresher.swift | 36 +++++++++++++++---- Shared/Commands/SendToMicroBlogCommand.swift | 2 +- submodules/RSWeb | 2 +- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/Frameworks/Account/LocalAccount/LocalAccountRefresher.swift b/Frameworks/Account/LocalAccount/LocalAccountRefresher.swift index 8a2078164..c207a78f1 100644 --- a/Frameworks/Account/LocalAccount/LocalAccountRefresher.swift +++ b/Frameworks/Account/LocalAccount/LocalAccountRefresher.swift @@ -18,11 +18,10 @@ final class LocalAccountRefresher { return DownloadSession(delegate: self) }() - var progress: DownloadProgress { - return downloadSession.progress - } + var progress = DownloadProgress(numberOfTasks: 0) public func refreshFeeds(_ feeds: Set) { + progress.addToNumberOfTasksAndRemaining(feeds.count) downloadSession.downloadObjects(feeds as NSSet) } } @@ -30,7 +29,7 @@ final class LocalAccountRefresher { // MARK: - DownloadSessionDelegate extension LocalAccountRefresher: DownloadSessionDelegate { - + func downloadSession(_ downloadSession: DownloadSession, requestForRepresentedObject representedObject: AnyObject) -> URLRequest? { guard let feed = representedObject as? Feed else { return nil @@ -39,32 +38,40 @@ extension LocalAccountRefresher: DownloadSessionDelegate { return nil } - let request = NSMutableURLRequest(url: url) + var request = URLRequest(url: url) if let conditionalGetInfo = feed.conditionalGetInfo { - conditionalGetInfo.addRequestHeadersToURLRequest(request) + conditionalGetInfo.addRequestHeadersToURLRequest(&request) } return request as URLRequest } - func downloadSession(_ downloadSession: DownloadSession, downloadDidCompleteForRepresentedObject representedObject: AnyObject, response: URLResponse?, data: Data, error: NSError?) { + func downloadSession(_ downloadSession: DownloadSession, downloadDidCompleteForRepresentedObject representedObject: AnyObject, response: URLResponse?, data: Data, error: NSError?, completion: @escaping () -> Void) { guard let feed = representedObject as? Feed, !data.isEmpty else { + progress.completeTask() + completion() return } if let error = error { print("Error downloading \(feed.url) - \(error)") + progress.completeTask() + completion() return } let dataHash = data.md5String if dataHash == feed.contentHash { + progress.completeTask() + completion() return } let parserData = ParserData(url: feed.url, data: data) FeedParser.parse(parserData) { (parsedFeed, error) in guard let account = feed.account, let parsedFeed = parsedFeed, error == nil else { + self.progress.completeTask() + completion() return } account.update(feed, with: parsedFeed) { @@ -73,12 +80,15 @@ extension LocalAccountRefresher: DownloadSessionDelegate { } feed.contentHash = dataHash + self.progress.completeTask() + completion() } } } func downloadSession(_ downloadSession: DownloadSession, shouldContinueAfterReceivingData data: Data, representedObject: AnyObject) -> Bool { guard let feed = representedObject as? Feed else { + progress.completeTask() return false } @@ -86,6 +96,7 @@ extension LocalAccountRefresher: DownloadSessionDelegate { return true } if data.isDefinitelyNotFeed() { + progress.completeTask() return false } @@ -98,10 +109,21 @@ extension LocalAccountRefresher: DownloadSessionDelegate { } func downloadSession(_ downloadSession: DownloadSession, didReceiveUnexpectedResponse response: URLResponse, representedObject: AnyObject) { + progress.completeTask() } func downloadSession(_ downloadSession: DownloadSession, didReceiveNotModifiedResponse: URLResponse, representedObject: AnyObject) { + progress.completeTask() } + + func downloadSession(_ downloadSession: DownloadSession, didDiscardDuplicateRepresentedObject: AnyObject) { + progress.completeTask() + } + + func downloadSessionDidCompleteDownloadObjects(_ downloadSession: DownloadSession) { + progress.clear() + } + } // MARK: - Utility diff --git a/Shared/Commands/SendToMicroBlogCommand.swift b/Shared/Commands/SendToMicroBlogCommand.swift index 59fc34987..56d0fe455 100644 --- a/Shared/Commands/SendToMicroBlogCommand.swift +++ b/Shared/Commands/SendToMicroBlogCommand.swift @@ -50,7 +50,7 @@ final class SendToMicroBlogCommand: SendToCommand { let s = article.attributionString + article.linkString let urlQueryDictionary = ["text": s] - guard let urlQueryString = urlQueryDictionary.urlQueryString() else { + guard let urlQueryString = urlQueryDictionary.urlQueryString else { return } guard let url = URL(string: "microblog://post?" + urlQueryString) else { diff --git a/submodules/RSWeb b/submodules/RSWeb index 9cb7ca961..05388e4f7 160000 --- a/submodules/RSWeb +++ b/submodules/RSWeb @@ -1 +1 @@ -Subproject commit 9cb7ca96182b3320882522708a2b4dcdaafb07f6 +Subproject commit 05388e4f7073b014f786cfce18782c3d61f8e378