From ba7fcd70c9287c47c67f969826ba7bdc52e3fa79 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Thu, 16 Jul 2020 14:10:40 -0500 Subject: [PATCH] Do Reddit and Twitter parsing/formatting on a background thread during sync --- .../FeedProvider/Reddit/RedditFeedProvider.swift | 13 ++++++------- .../FeedProvider/Twitter/TwitterFeedProvider.swift | 8 ++++++-- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Frameworks/Account/FeedProvider/Reddit/RedditFeedProvider.swift b/Frameworks/Account/FeedProvider/Reddit/RedditFeedProvider.swift index 18f0b1934..b293e69f8 100644 --- a/Frameworks/Account/FeedProvider/Reddit/RedditFeedProvider.swift +++ b/Frameworks/Account/FeedProvider/Reddit/RedditFeedProvider.swift @@ -192,8 +192,12 @@ public final class RedditFeedProvider: FeedProvider { fetch(api: api, parameters: [:], resultType: RedditLinkListing.self) { result in switch result { case .success(let linkListing): - let parsedItems = self.makeParsedItems(webFeed.url, identifySubreddit, linkListing) - completion(.success(parsedItems)) + DispatchQueue.global(qos: .background).async { + let parsedItems = self.makeParsedItems(webFeed.url, identifySubreddit, linkListing) + DispatchQueue.main.async { + completion(.success(parsedItems)) + } + } case .failure(let error): completion(.failure(error)) } @@ -324,11 +328,6 @@ private extension RedditFeedProvider { switch result { case .success(let response): -// let jsonString = String(data: response.data, encoding: .utf8) -// let url = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("reddit.json") -// print("******** writing to: \(url.path)") -// try? jsonString?.write(toFile: url.path, atomically: true, encoding: .utf8) - if let remaining = response.response.value(forHTTPHeaderField: "X-Ratelimit-Remaining") { self.rateLimitRemaining = Int(remaining) } else { diff --git a/Frameworks/Account/FeedProvider/Twitter/TwitterFeedProvider.swift b/Frameworks/Account/FeedProvider/Twitter/TwitterFeedProvider.swift index abce8d951..9fbfa2429 100644 --- a/Frameworks/Account/FeedProvider/Twitter/TwitterFeedProvider.swift +++ b/Frameworks/Account/FeedProvider/Twitter/TwitterFeedProvider.swift @@ -227,8 +227,12 @@ public final class TwitterFeedProvider: FeedProvider { if let sinceID = statuses.first?.idStr { webFeed.sinceToken = sinceID } - let parsedItems = self.makeParsedItems(webFeed.url, statuses) - completion(.success(parsedItems)) + DispatchQueue.global(qos: .background).async { + let parsedItems = self.makeParsedItems(webFeed.url, statuses) + DispatchQueue.main.async { + completion(.success(parsedItems)) + } + } case .failure(let error): completion(.failure(error)) }