diff --git a/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift b/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift index f66634fbd..0bda6b136 100644 --- a/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift +++ b/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift @@ -12,6 +12,10 @@ import Views @Published var showCreateLabelModal = false @Published var labelSearchFilter = "" + func setLabels(_ labels: [LinkedItemLabel]) { + self.labels = labels.sorted { $0.unwrappedName.trimmingCharacters(in: .whitespaces) < $1.unwrappedName.trimmingCharacters(in: .whitespaces) } + } + func loadLabels( dataService: DataService, item: LinkedItem? = nil, @@ -21,7 +25,7 @@ import Views if let labelIDs = try? await dataService.labels() { dataService.viewContext.performAndWait { - self.labels = labelIDs.compactMap { dataService.viewContext.object(with: $0) as? LinkedItemLabel } + setLabels(labelIDs.compactMap { dataService.viewContext.object(with: $0) as? LinkedItemLabel }) } let selLabels = initiallySelectedLabels ?? item?.sortedLabels ?? [] for label in labels { @@ -44,7 +48,7 @@ import Views if let labelIDs = try? await dataService.labels() { dataService.viewContext.performAndWait { - self.labels = labelIDs.compactMap { dataService.viewContext.object(with: $0) as? LinkedItemLabel } + setLabels(labelIDs.compactMap { dataService.viewContext.object(with: $0) as? LinkedItemLabel }) } let selLabels = highlight.labels ?? [] for label in labels { @@ -69,7 +73,7 @@ import Views if fetchedLabels?.count == 0 { await fetchLabelsFromNetwork(dataService: dataService) } else { - labels = fetchedLabels ?? [] + setLabels(fetchedLabels ?? []) unselectedLabels = fetchedLabels ?? [] } } @@ -82,7 +86,7 @@ import Views labelIDs.compactMap { dataService.viewContext.object(with: $0) as? LinkedItemLabel } } - labels = fetchedLabels + setLabels(fetchedLabels) unselectedLabels = fetchedLabels }