| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import Foundation
- // Fetch Data for Glucose and Determination from Core Data and map them to the Structs in order to pass them thread safe to the glucoseDidUpdate/ pushUpdate function
- @available(iOS 16.2, *)
- extension LiveActivityBridge {
- func fetchAndMapGlucose() async {
- let results = await CoreDataStack.shared.fetchEntitiesAsync(
- ofType: GlucoseStored.self,
- onContext: context,
- predicate: NSPredicate.predicateForSixHoursAgo,
- key: "date",
- ascending: false,
- fetchLimit: 72
- )
- await context.perform {
- guard let glucoseResults = results as? [GlucoseStored] else {
- return
- }
- self.glucoseFromPersistence = glucoseResults.map {
- GlucoseData(glucose: Int($0.glucose), date: $0.date ?? Date(), direction: $0.directionEnum)
- }
- }
- }
- func fetchAndMapDetermination() async {
- let results = await CoreDataStack.shared.fetchEntitiesAsync(
- ofType: OrefDetermination.self,
- onContext: context,
- predicate: NSPredicate.predicateFor30MinAgoForDetermination,
- key: "deliverAt",
- ascending: false,
- fetchLimit: 1,
- propertiesToFetch: ["iob", "cob"]
- )
- await context.perform {
- guard let determinationResults = results as? [[String: Any]] else {
- return
- }
- self.determination = determinationResults.first.map {
- DeterminationData(
- cob: ($0["cob"] as? Int) ?? 0,
- iob: ($0["iob"] as? NSDecimalNumber)?.decimalValue ?? 0
- )
- }
- }
- }
- func fetchAndMapOverride() async {
- let results = await CoreDataStack.shared.fetchEntitiesAsync(
- ofType: OverrideStored.self,
- onContext: context,
- predicate: NSPredicate.predicateForOneDayAgo,
- key: "date",
- ascending: false,
- fetchLimit: 1,
- propertiesToFetch: ["enabled"]
- )
- await context.perform {
- guard let overrideResults = results as? [[String: Any]] else {
- return
- }
- self.isOverridesActive = overrideResults.first.map {
- OverrideData(isActive: $0["enabled"] as? Bool ?? false)
- }
- }
- }
- }
|