diff --git a/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift b/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift index 92aa9df2a..e0a7aa062 100644 --- a/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift +++ b/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift @@ -22,7 +22,7 @@ import Views dataService.viewContext.performAndWait { self.labels = labelIDs.compactMap { dataService.viewContext.object(with: $0) as? LinkedItemLabel } } - let selLabels = initiallySelectedLabels ?? item?.labels.asArray(of: LinkedItemLabel.self) ?? [] + let selLabels = initiallySelectedLabels ?? item?.sortedLabels ?? [] for label in labels { if selLabels.contains(label) { selectedLabels.append(label) diff --git a/apple/OmnivoreKit/Sources/Models/DataModels/FeedItem.swift b/apple/OmnivoreKit/Sources/Models/DataModels/FeedItem.swift index 1e1fd0363..c6b8421a3 100644 --- a/apple/OmnivoreKit/Sources/Models/DataModels/FeedItem.swift +++ b/apple/OmnivoreKit/Sources/Models/DataModels/FeedItem.swift @@ -58,6 +58,12 @@ public extension LinkedItem { return URL(string: pageURLString ?? "") } + var sortedLabels: [LinkedItemLabel] { + labels.asArray(of: LinkedItemLabel.self).sorted { + ($0.name ?? "").lowercased() < ($1.name ?? "").lowercased() + } + } + var labelsJSONString: String { let labels = self.labels.asArray(of: LinkedItemLabel.self).map { label in [ diff --git a/apple/OmnivoreKit/Sources/Views/FeedItem/GridCard.swift b/apple/OmnivoreKit/Sources/Views/FeedItem/GridCard.swift index f9e5c49ba..bb2dc5c33 100644 --- a/apple/OmnivoreKit/Sources/Views/FeedItem/GridCard.swift +++ b/apple/OmnivoreKit/Sources/Views/FeedItem/GridCard.swift @@ -151,7 +151,7 @@ public struct GridCard: View { // Category Labels ScrollView(.horizontal, showsIndicators: false) { HStack { - ForEach(item.labels.asArray(of: LinkedItemLabel.self), id: \.self) { + ForEach(item.sortedLabels, id: \.self) { TextChip(feedItemLabel: $0) } Spacer() diff --git a/apple/OmnivoreKit/Sources/Views/FeedItem/HomeFeedCardView.swift b/apple/OmnivoreKit/Sources/Views/FeedItem/HomeFeedCardView.swift index 9bf95af7d..afb3f2916 100644 --- a/apple/OmnivoreKit/Sources/Views/FeedItem/HomeFeedCardView.swift +++ b/apple/OmnivoreKit/Sources/Views/FeedItem/HomeFeedCardView.swift @@ -67,7 +67,7 @@ public struct FeedCard: View { // Category Labels ScrollView(.horizontal, showsIndicators: false) { HStack { - ForEach(item.labels.asArray(of: LinkedItemLabel.self), id: \.self) { + ForEach(item.sortedLabels, id: \.self) { TextChip(feedItemLabel: $0) } Spacer()