Do Reddit and Twitter parsing/formatting on a background thread during sync

This commit is contained in:
Maurice Parker
2020-07-16 14:10:40 -05:00
parent 84389e2cf4
commit ba7fcd70c9
2 changed files with 12 additions and 9 deletions

View File

@@ -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 {

View File

@@ -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))
}