Use the same code for loading labels from highlights as library items

This commit is contained in:
Jackson Harper
2023-01-23 19:51:34 +08:00
parent 6a5bf6ffe7
commit 3b6d720b2b
2 changed files with 8 additions and 25 deletions

View File

@ -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<Models.LinkedItemLabel> = LinkedItemLabel.fetchRequest()

View File

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