diff --git a/apple/OmnivoreKit/Sources/Services/DataService/ContentLoading.swift b/apple/OmnivoreKit/Sources/Services/DataService/ContentLoading.swift index c9fe9302a..775103e3b 100644 --- a/apple/OmnivoreKit/Sources/Services/DataService/ContentLoading.swift +++ b/apple/OmnivoreKit/Sources/Services/DataService/ContentLoading.swift @@ -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 = 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 = LinkedItem.fetchRequest() + fetchRequest.predicate = NSPredicate(format: "createdId == %@ OR id == %@", requestID, requestID) + return try? self.backgroundContext.fetch(fetchRequest).first?.unwrappedID + } } func syncUnsyncedArticleContent(itemID: String) async { diff --git a/apple/OmnivoreKit/Sources/Services/DataService/Public/LinkedItemContentLoading.swift b/apple/OmnivoreKit/Sources/Services/DataService/Public/LinkedItemContentLoading.swift index e51fc1c21..86e020fcf 100644 --- a/apple/OmnivoreKit/Sources/Services/DataService/Public/LinkedItemContentLoading.swift +++ b/apple/OmnivoreKit/Sources/Services/DataService/Public/LinkedItemContentLoading.swift @@ -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 }