mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
fix threading violation
This commit is contained in:
parent
1cdfe4a439
commit
b09268bad2
2 changed files with 9 additions and 8 deletions
|
|
@ -1,7 +1,6 @@
|
|||
import CoreData
|
||||
import Foundation
|
||||
import Models
|
||||
import SwiftGraphQL
|
||||
import Utils
|
||||
|
||||
struct PendingLink {
|
||||
|
|
@ -176,10 +175,12 @@ extension DataService {
|
|||
/// Queries CoreData for a LinkedItem using a requestID.
|
||||
/// - Parameter requestID: A requestID used to check on a newly created item.
|
||||
/// - Returns: The id of the CoreData object if found.
|
||||
func linkedItemID(from requestID: String) -> String? {
|
||||
let fetchRequest: NSFetchRequest<Models.LinkedItem> = LinkedItem.fetchRequest()
|
||||
fetchRequest.predicate = NSPredicate(format: "createdId == %@ OR id == %@", requestID, requestID)
|
||||
return try? backgroundContext.fetch(fetchRequest).first?.unwrappedID
|
||||
func linkedItemID(from requestID: String) async -> String? {
|
||||
await backgroundContext.perform(schedule: .immediate) {
|
||||
let fetchRequest: NSFetchRequest<Models.LinkedItem> = LinkedItem.fetchRequest()
|
||||
fetchRequest.predicate = NSPredicate(format: "createdId == %@ OR id == %@", requestID, requestID)
|
||||
return try? self.backgroundContext.fetch(fetchRequest).first?.unwrappedID
|
||||
}
|
||||
}
|
||||
|
||||
func syncUnsyncedArticleContent(itemID: String) async {
|
||||
|
|
|
|||
|
|
@ -33,9 +33,9 @@ public extension DataService {
|
|||
let retryDelayInNanoSeconds = UInt64(requestCount * 2 * 1_000_000_000)
|
||||
try await Task.sleep(nanoseconds: retryDelayInNanoSeconds)
|
||||
logger.debug("fetching content for \(itemID). request count: \(requestCount)")
|
||||
// Check for an updated requestID
|
||||
let updatedItemID = linkedItemID(from: itemID) ?? itemID
|
||||
return try await loadArticleContentWithRetries(itemID: updatedItemID, username: username, requestCount: requestCount + 1)
|
||||
// Check for an updated itemID
|
||||
let updatedItemID = await linkedItemID(from: itemID)
|
||||
return try await loadArticleContentWithRetries(itemID: updatedItemID ?? itemID, username: username, requestCount: requestCount + 1)
|
||||
case .succeeded, .unknown:
|
||||
return fetchedContent
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue