diff --git a/apple/OmnivoreKit/Sources/App/Views/Labels/ApplyLabelsView.swift b/apple/OmnivoreKit/Sources/App/Views/Labels/ApplyLabelsView.swift index 592159255..b259cdbf0 100644 --- a/apple/OmnivoreKit/Sources/App/Views/Labels/ApplyLabelsView.swift +++ b/apple/OmnivoreKit/Sources/App/Views/Labels/ApplyLabelsView.swift @@ -179,7 +179,7 @@ struct ApplyLabelsView: View { Group { #if os(iOS) NavigationView { - if viewModel.isLoading { + if viewModel.labels.isEmpty, viewModel.isLoading { EmptyView() } else { innerBody @@ -190,14 +190,16 @@ struct ApplyLabelsView: View { .frame(minWidth: 400, minHeight: 600) #endif } - .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) + .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) + } } } } diff --git a/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift b/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift index 3578e362f..98b5dd8e2 100644 --- a/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift +++ b/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift @@ -42,6 +42,7 @@ import SwiftUI unselectedLabels.insert(label) } } + isLoading = false Task.detached(priority: .userInitiated) { if let labelIDs = try? await dataService.labels() { @@ -58,11 +59,10 @@ import SwiftUI self.unselectedLabels.insert(label) } } + self.isLoading = false } } } - - isLoading = false } func loadLabelsFromStore(dataService: DataService) async {