mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
Use task instead of onAppear for async, add some PDF download debugging
This commit is contained in:
parent
f48a36de79
commit
89f21ad228
6 changed files with 34 additions and 38 deletions
|
|
@ -56,8 +56,8 @@ struct FeedCardNavigationLink: View {
|
|||
}
|
||||
)
|
||||
}
|
||||
.onAppear {
|
||||
Task { await viewModel.itemAppeared(item: item, dataService: dataService) }
|
||||
.task {
|
||||
await viewModel.itemAppeared(item: item, dataService: dataService)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -92,14 +92,8 @@ struct GridCardNavigationLink: View {
|
|||
GridCard(item: item, isContextMenuOpen: $isContextMenuOpen, actionHandler: actionHandler)
|
||||
}
|
||||
)
|
||||
// NavigationLink(destination: LinkItemDetailView(
|
||||
// linkedItemObjectID: item.objectID,
|
||||
// isPDF: item.isPDF
|
||||
// )) {
|
||||
//
|
||||
// }
|
||||
.onAppear {
|
||||
Task { await viewModel.itemAppeared(item: item, dataService: dataService) }
|
||||
.task {
|
||||
await viewModel.itemAppeared(item: item, dataService: dataService)
|
||||
}
|
||||
.aspectRatio(1.0, contentMode: .fill)
|
||||
.background(
|
||||
|
|
|
|||
|
|
@ -262,7 +262,7 @@ import Views
|
|||
try await dataService.moveItem(itemID: item.unwrappedID, folder: folder)
|
||||
snackbar("Item moved")
|
||||
} catch {
|
||||
snackbar("Error performing operation")
|
||||
snackbar("Error moving item to \(folder)")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -277,6 +277,7 @@ import Views
|
|||
try await dataService.bulkAction(action: action, items: items)
|
||||
snackbar("Operation completed")
|
||||
} catch {
|
||||
print("ERROR: ", error)
|
||||
snackbar("Error performing operation")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -106,16 +106,14 @@ struct ApplyLabelsView: View {
|
|||
.sheet(isPresented: $viewModel.showCreateLabelModal) {
|
||||
CreateLabelView(viewModel: viewModel, newLabelName: viewModel.labelSearchFilter)
|
||||
}
|
||||
.onAppear {
|
||||
Task {
|
||||
switch mode {
|
||||
case let .item(feedItem):
|
||||
await viewModel.loadLabels(dataService: dataService, item: feedItem)
|
||||
case let .highlight(highlight):
|
||||
await viewModel.loadLabels(dataService: dataService, highlight: highlight)
|
||||
case let .list(labels):
|
||||
await viewModel.loadLabels(dataService: dataService, initiallySelectedLabels: labels)
|
||||
}
|
||||
.task {
|
||||
switch mode {
|
||||
case let .item(feedItem):
|
||||
await viewModel.loadLabels(dataService: dataService, item: feedItem)
|
||||
case let .highlight(highlight):
|
||||
await viewModel.loadLabels(dataService: dataService, highlight: highlight)
|
||||
case let .list(labels):
|
||||
await viewModel.loadLabels(dataService: dataService, initiallySelectedLabels: labels)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -154,16 +154,14 @@ import SwiftUI
|
|||
}
|
||||
}
|
||||
}
|
||||
}.onAppear {
|
||||
Task {
|
||||
await inboxViewModel.loadFilters(dataService: dataService)
|
||||
await followingViewModel.loadFilters(dataService: dataService)
|
||||
}.task {
|
||||
await inboxViewModel.loadFilters(dataService: dataService)
|
||||
await followingViewModel.loadFilters(dataService: dataService)
|
||||
|
||||
if inboxActive {
|
||||
selectedFilter = inboxViewModel.appliedFilter
|
||||
} else {
|
||||
selectedFilter = followingViewModel.appliedFilter
|
||||
}
|
||||
if inboxActive {
|
||||
selectedFilter = inboxViewModel.appliedFilter
|
||||
} else {
|
||||
selectedFilter = followingViewModel.appliedFilter
|
||||
}
|
||||
}.onChange(of: inboxViewModel.appliedFilter) { filter in
|
||||
// When the user uses the dropdown menu to change filter we need to update in the sidebar
|
||||
|
|
|
|||
|
|
@ -66,13 +66,11 @@ public struct WebReaderLoadingContainer: View {
|
|||
Text(errorMessage)
|
||||
} else {
|
||||
ProgressView()
|
||||
.onAppear {
|
||||
Task {
|
||||
if let username = dataService.currentViewer?.username {
|
||||
await viewModel.loadItem(dataService: dataService, username: username, requestID: requestID)
|
||||
} else {
|
||||
viewModel.errorMessage = "You are not logged in."
|
||||
}
|
||||
.task {
|
||||
if let username = dataService.currentViewer?.username {
|
||||
await viewModel.loadItem(dataService: dataService, username: username, requestID: requestID)
|
||||
} else {
|
||||
viewModel.errorMessage = "You are not logged in."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,14 @@ public extension DataService {
|
|||
throw BasicError.message(messageText: "No PDF URL found")
|
||||
}
|
||||
|
||||
let result: (Data, URLResponse)? = try? await URLSession.shared.data(from: url)
|
||||
var result: (Data, URLResponse)?
|
||||
do {
|
||||
let request = URLRequest(url: url, timeoutInterval: 120)
|
||||
result = try await URLSession.shared.data(for: request)
|
||||
} catch {
|
||||
print("ERROR DOWNLOADING PDF DATA: ", error)
|
||||
print("URL", url)
|
||||
}
|
||||
|
||||
guard let httpResponse = result?.1 as? HTTPURLResponse, 200 ..< 300 ~= httpResponse.statusCode else {
|
||||
throw BasicError.message(messageText: "pdfFetch failed. no response or bad status code.")
|
||||
|
|
|
|||
Loading…
Reference in a new issue