From 4298183a24c76010c64c980592bd6551e23dee4b Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Thu, 22 Dec 2022 16:01:18 +0800 Subject: [PATCH] First load labels from cache then make call Also sorts them alphabetically. --- .../App/Views/Labels/LabelsViewModel.swift | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift b/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift index 0bda6b136..68dd6f4f9 100644 --- a/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift +++ b/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift @@ -23,16 +23,22 @@ import Views ) async { isLoading = true - if let labelIDs = try? await dataService.labels() { - dataService.viewContext.performAndWait { - setLabels(labelIDs.compactMap { dataService.viewContext.object(with: $0) as? LinkedItemLabel }) - } - let selLabels = initiallySelectedLabels ?? item?.sortedLabels ?? [] - for label in labels { - if selLabels.contains(label) { - selectedLabels.append(label) - } else { - unselectedLabels.append(label) + await loadLabelsFromStore(dataService: dataService) + + Task.detached(priority: .userInitiated) { + if let labelIDs = try? await dataService.labels() { + DispatchQueue.main.async { + dataService.viewContext.performAndWait { + self.setLabels(labelIDs.compactMap { dataService.viewContext.object(with: $0) as? LinkedItemLabel }) + } + let selLabels = initiallySelectedLabels ?? item?.sortedLabels ?? [] + for label in self.labels { + if selLabels.contains(label) { + self.selectedLabels.append(label) + } else { + self.unselectedLabels.append(label) + } + } } } }