diff --git a/apple/OmnivoreKit/Sources/App/AppExtensions/Share/Views/ShareExtensionView.swift b/apple/OmnivoreKit/Sources/App/AppExtensions/Share/Views/ShareExtensionView.swift index c20993172..ed0991c9d 100644 --- a/apple/OmnivoreKit/Sources/App/AppExtensions/Share/Views/ShareExtensionView.swift +++ b/apple/OmnivoreKit/Sources/App/AppExtensions/Share/Views/ShareExtensionView.swift @@ -14,6 +14,7 @@ public struct ShareExtensionView: View { @State var hideUntilReminded = false @State var previousLabels: [LinkedItemLabel]? @State var messageText: String? + @State var searchTerm: String = "" @State var viewState = ViewState.mainView @State var showHighlightInstructionAlert = false @@ -175,6 +176,7 @@ public struct ShareExtensionView: View { } else { VStack { ScrollView { + SearchBar(searchTerm: $searchTerm) LabelsMasonaryView(labels: labelsViewModel.labels, selectedLabels: labelsViewModel.selectedLabels, onLabelTap: onLabelTap) diff --git a/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsMasonaryView.swift b/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsMasonaryView.swift index 61d2dc785..a9d24a4e6 100644 --- a/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsMasonaryView.swift +++ b/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsMasonaryView.swift @@ -30,7 +30,9 @@ struct LabelsMasonaryView: View { let selected = selectedLabels.map { (label: $0, selected: true) } let unselected = allLabels.filter { !selectedLabels.contains($0) }.map { (label: $0, selected: false) } labelItems = (selected + unselected).sorted(by: { left, right in - (left.label.name ?? "") < (right.label.name ?? "") + let aTrimmed = left.label.unwrappedName.trimmingCharacters(in: .whitespaces) + let bTrimmed = right.label.unwrappedName.trimmingCharacters(in: .whitespaces) + return aTrimmed.caseInsensitiveCompare(bTrimmed) == .orderedAscending }) } diff --git a/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift b/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift index 68dd6f4f9..6c7d7d5b0 100644 --- a/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift +++ b/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsViewModel.swift @@ -13,7 +13,11 @@ import Views @Published var labelSearchFilter = "" func setLabels(_ labels: [LinkedItemLabel]) { - self.labels = labels.sorted { $0.unwrappedName.trimmingCharacters(in: .whitespaces) < $1.unwrappedName.trimmingCharacters(in: .whitespaces) } + self.labels = labels.sorted { left, right in + let aTrimmed = left.unwrappedName.trimmingCharacters(in: .whitespaces) + let bTrimmed = right.unwrappedName.trimmingCharacters(in: .whitespaces) + return aTrimmed.caseInsensitiveCompare(bTrimmed) == .orderedAscending + } } func loadLabels(