Proper case-insensitive compare on the labels in the share extension

This commit is contained in:
Jackson Harper 2023-01-20 15:00:40 +08:00
parent 86bd9ec66e
commit 8f6b2663c4
3 changed files with 10 additions and 2 deletions

View file

@ -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)

View file

@ -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
})
}

View file

@ -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(