diff --git a/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift b/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift index 418fd6f18..3b77aad24 100644 --- a/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift +++ b/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift @@ -23,12 +23,13 @@ import Views func loadLabels( dataService: DataService, item: LinkedItem? = nil, + highlight: Highlight? = nil, initiallySelectedLabels: [LinkedItemLabel]? = nil ) async { isLoading = true + let selLabels = initiallySelectedLabels ?? item?.sortedLabels ?? highlight?.sortedLabels ?? [] await loadLabelsFromStore(dataService: dataService) - let selLabels = initiallySelectedLabels ?? item?.sortedLabels ?? [] for label in labels { if selLabels.contains(label) { selectedLabels.insert(label) @@ -43,7 +44,6 @@ import Views 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.insert(label) @@ -58,29 +58,6 @@ import Views isLoading = false } - func loadLabels( - dataService: DataService, - highlight: Highlight - ) 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 = highlight.labels ?? [] - for label in labels { - if selLabels.contains(label) { - selectedLabels.insert(label) - } else { - unselectedLabels.insert(label) - } - } - } - - isLoading = false - } - func loadLabelsFromStore(dataService: DataService) async { let fetchRequest: NSFetchRequest = LinkedItemLabel.fetchRequest() diff --git a/apple/OmnivoreKit/Sources/Models/DataModels/Highlight.swift b/apple/OmnivoreKit/Sources/Models/DataModels/Highlight.swift index 182f71364..14ffeab86 100644 --- a/apple/OmnivoreKit/Sources/Models/DataModels/Highlight.swift +++ b/apple/OmnivoreKit/Sources/Models/DataModels/Highlight.swift @@ -19,6 +19,12 @@ public extension Highlight { return highlight } + var sortedLabels: [LinkedItemLabel] { + labels.asArray(of: LinkedItemLabel.self).sorted { + ($0.name ?? "").lowercased() < ($1.name ?? "").lowercased() + } + } + func update( inContext context: NSManagedObjectContext, newAnnotation: String