mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
Handle async threading error with read now accessing the currentViewer property
This commit is contained in:
parent
b610a7f734
commit
fbd6e97be6
2 changed files with 14 additions and 8 deletions
|
|
@ -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."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue