Fix concurrency warnings in Parser module.

This commit is contained in:
Brent Simmons
2024-04-16 22:03:20 -07:00
parent f449a443d8
commit e03ad03e60
4 changed files with 50 additions and 77 deletions

View File

@@ -23,14 +23,25 @@ public struct InitialFeedDownloader {
@MainActor public static func download(_ url: URL,_ completion: @escaping @Sendable (_ parsedFeed: ParsedFeed?) -> Void) {
downloadUsingCache(url) { (data, response, error) in
guard let data = data else {
Task {
guard let downloadData = try? await downloadUsingCache(url) else {
completion(nil)
return
}
guard let data = downloadData.data else {
completion(nil)
return
}
let parserData = ParserData(url: url.absoluteString, data: data)
FeedParser.parse(parserData) { (parsedFeed, error) in
Task.detached {
guard let parsedFeed = try? await FeedParser.parse(parserData) else {
completion(nil)
return
}
completion(parsedFeed)
}
}