Explorar el Código

Don't use glucoseStorage

Jon Mårtensson hace 2 años
padre
commit
9904fbb6cd

+ 1 - 0
FreeAPS/Sources/Modules/Bolus/BolusDataFlow.swift

@@ -5,4 +5,5 @@ enum Bolus {
 protocol BolusProvider: Provider {
     var suggestion: Suggestion? { get }
     func pumpSettings() -> PumpSettings
+    func fetchGlucose() -> [Readings]
 }

+ 19 - 0
FreeAPS/Sources/Modules/Bolus/BolusProvider.swift

@@ -1,5 +1,9 @@
+import CoreData
+
 extension Bolus {
     final class Provider: BaseProvider, BolusProvider {
+        let coredataContext = CoreDataStack.shared.persistentContainer.viewContext
+
         var suggestion: Suggestion? {
             storage.retrieve(OpenAPS.Enact.suggested, as: Suggestion.self)
         }
@@ -9,5 +13,20 @@ extension Bolus {
                 ?? PumpSettings(from: OpenAPS.defaults(for: OpenAPS.Settings.settings))
                 ?? PumpSettings(insulinActionCurve: 6, maxBolus: 10, maxBasal: 2)
         }
+
+        func fetchGlucose() -> [Readings] {
+            var fetchGlucose = [Readings]()
+            coredataContext.performAndWait {
+                let requestReadings = Readings.fetchRequest() as NSFetchRequest<Readings>
+                let sort = NSSortDescriptor(key: "date", ascending: true)
+                requestReadings.sortDescriptors = [sort]
+                requestReadings.predicate = NSPredicate(
+                    format: "glucose > 0 AND date > %@",
+                    Date().addingTimeInterval(-1.hours.timeInterval) as NSDate
+                )
+                try? fetchGlucose = self.coredataContext.fetch(requestReadings)
+            }
+            return fetchGlucose
+        }
     }
 }

+ 6 - 4
FreeAPS/Sources/Modules/Bolus/BolusStateModel.swift

@@ -1,4 +1,5 @@
 
+import CoreData
 import LoopKit
 import SwiftUI
 import Swinject
@@ -10,10 +11,11 @@ extension Bolus {
         @Injected() var broadcaster: Broadcaster!
         @Injected() var pumpHistoryStorage: PumpHistoryStorage!
         // added for bolus calculator
-        @Injected() var glucoseStorage: GlucoseStorage!
         @Injected() var settings: SettingsManager!
         @Injected() var nsManager: NightscoutManager!
 
+        let coredataContext = CoreDataStack.shared.persistentContainer.viewContext
+
         @Published var suggestion: Suggestion?
         @Published var amount: Decimal = 0
         @Published var insulinRecommended: Decimal = 0
@@ -94,11 +96,11 @@ extension Bolus {
         }
 
         func getDeltaBG() {
-            let glucose = glucoseStorage.recent()
+            let glucose = provider.fetchGlucose()
             guard glucose.count >= 3 else { return }
-            let lastGlucose = glucose.last!
+            let lastGlucose = glucose.last?.glucose ?? 0
             let thirdLastGlucose = glucose[glucose.count - 3]
-            let delta = Decimal(lastGlucose.glucose!) - Decimal(thirdLastGlucose.glucose!)
+            let delta = Decimal(lastGlucose) - Decimal(thirdLastGlucose.glucose)
             deltaBG = delta
         }
 

+ 0 - 1
FreeAPS/Sources/Modules/Bolus/View/AlternativeBolusCalcRootView.swift

@@ -1,4 +1,3 @@
-import Charts
 import CoreData
 import SwiftUI
 import Swinject