From de636748c1b5d3003cee222fc5e0a7691957f1ac Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Wed, 1 Nov 2023 22:50:21 +0800 Subject: [PATCH] Fix empty labels view bug --- .../App/Views/Labels/ApplyLabelsView.swift | 20 ++++++++++--------- .../App/Views/Labels/LabelsViewModel.swift | 4 ++-- 2 files changed, 13 insertions(+), 11 deletions(-) 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 {