fetch labels from network if none are found in core data
This commit is contained in:
@ -43,8 +43,24 @@ import Views
|
||||
try? fetchRequest.execute()
|
||||
}
|
||||
|
||||
labels = fetchedLabels ?? []
|
||||
unselectedLabels = fetchedLabels ?? []
|
||||
if fetchedLabels?.count == 0 {
|
||||
await fetchLabelsFromNetwork(dataService: dataService)
|
||||
} else {
|
||||
labels = fetchedLabels ?? []
|
||||
unselectedLabels = fetchedLabels ?? []
|
||||
}
|
||||
}
|
||||
|
||||
func fetchLabelsFromNetwork(dataService: DataService) async {
|
||||
let labelIDs = try? await dataService.labels()
|
||||
guard let labelIDs = labelIDs else { return }
|
||||
|
||||
let fetchedLabels = await dataService.viewContext.perform {
|
||||
labelIDs.compactMap { dataService.viewContext.object(with: $0) as? LinkedItemLabel }
|
||||
}
|
||||
|
||||
labels = fetchedLabels
|
||||
unselectedLabels = fetchedLabels
|
||||
}
|
||||
|
||||
func createLabel(dataService: DataService, name: String, color: Color, description: String?) {
|
||||
|
||||
@ -65,7 +65,7 @@ struct InternalLinkedItem {
|
||||
if let existingLabels = linkedItem.labels {
|
||||
linkedItem.removeFromLabels(existingLabels)
|
||||
}
|
||||
|
||||
|
||||
for label in labels {
|
||||
linkedItem.addToLabels(label.asManagedObject(inContext: context))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user