fetch labels from network if none are found in core data

This commit is contained in:
Satindar Dhillon
2022-08-05 06:59:19 -07:00
parent 609aff48fc
commit 06481d21d3
2 changed files with 19 additions and 3 deletions

View File

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

View File

@ -65,7 +65,7 @@ struct InternalLinkedItem {
if let existingLabels = linkedItem.labels {
linkedItem.removeFromLabels(existingLabels)
}
for label in labels {
linkedItem.addToLabels(label.asManagedObject(inContext: context))
}