Handle async threading error with read now accessing the currentViewer property

This commit is contained in:
Jackson Harper 2022-09-23 17:49:45 +08:00
parent b610a7f734
commit fbd6e97be6
2 changed files with 14 additions and 8 deletions

View file

@ -9,8 +9,12 @@ import Views
@Published var item: LinkedItem?
@Published var errorMessage: String?
func loadItem(dataService: DataService, requestID: String) async {
guard let objectID = try? await dataService.loadItemContentUsingRequestID(requestID: requestID) else { return }
func loadItem(dataService: DataService, username: String, requestID: String) async {
guard let objectID = try? await dataService.loadItemContentUsingRequestID(username: username,
requestID: requestID)
else {
return
}
item = dataService.viewContext.object(with: objectID) as? LinkedItem
}
@ -60,7 +64,13 @@ public struct WebReaderLoadingContainer: View {
Text(errorMessage)
} else {
ProgressView()
.task { await viewModel.loadItem(dataService: dataService, requestID: requestID) }
.task {
if let username = dataService.currentViewer?.username {
await viewModel.loadItem(dataService: dataService, username: username, requestID: requestID)
} else {
viewModel.errorMessage = "You are not logged in."
}
}
}
}
}

View file

@ -84,11 +84,7 @@ public extension DataService {
return persistedItemID
}
func loadItemContentUsingRequestID(requestID: String) async throws -> NSManagedObjectID? {
let username: String? = await username()
guard let username = username else { throw BasicError.message(messageText: "unauthorized user") }
// If the page was locally created, make sure they are synced before we pull content
func loadItemContentUsingRequestID(username: String, requestID: String) async throws -> NSManagedObjectID? {
await syncUnsyncedArticleContent(itemID: requestID)
let articleContent = try await loadArticleContentWithRetries(itemID: requestID, username: username, requestCount: 0)