polscm32 2 лет назад
Родитель
Сommit
8bcb10f2ad
1 измененных файлов с 25 добавлено и 15 удалено
  1. 25 15
      FreeAPS/Sources/Services/LiveActivity/LiveActivityBridge.swift

+ 25 - 15
FreeAPS/Sources/Services/LiveActivity/LiveActivityBridge.swift

@@ -41,7 +41,7 @@ extension LiveActivityAttributes.ContentState {
         mmol: Bool,
         mmol: Bool,
         chart: [GlucoseStored],
         chart: [GlucoseStored],
         settings: FreeAPSSettings,
         settings: FreeAPSSettings,
-        suggestion: Suggestion
+        determination: OrefDetermination?
     ) {
     ) {
         let glucose = bg.glucose
         let glucose = bg.glucose
         let formattedBG = Self.formatGlucose(Int(glucose), mmol: mmol, forceSign: false)
         let formattedBG = Self.formatGlucose(Int(glucose), mmol: mmol, forceSign: false)
@@ -76,12 +76,12 @@ extension LiveActivityAttributes.ContentState {
         let conversionFactor: Double = settings.units == .mmolL ? 18.0 : 1.0
         let conversionFactor: Double = settings.units == .mmolL ? 18.0 : 1.0
         let convertedChartBG = chartBG.map { Double($0) / conversionFactor }
         let convertedChartBG = chartBG.map { Double($0) / conversionFactor }
         let chartDate = chart.map(\.date)
         let chartDate = chart.map(\.date)
-        
+
         /// glucose limits from UI settings, not from notifications settings
         /// glucose limits from UI settings, not from notifications settings
         let highGlucose = settings.high / Decimal(conversionFactor)
         let highGlucose = settings.high / Decimal(conversionFactor)
         let lowGlucose = settings.low / Decimal(conversionFactor)
         let lowGlucose = settings.low / Decimal(conversionFactor)
-        let cob = suggestion.cob ?? 0
-        let iob = suggestion.iob ?? 0
+        let cob = determination?.cob ?? 0
+        let iob = determination?.iob ?? 0
         let lockScreenView = settings.lockScreenView.displayName
         let lockScreenView = settings.lockScreenView.displayName
         let unit = settings.units == .mmolL ? " mmol/L" : " mg/dL"
         let unit = settings.units == .mmolL ? " mmol/L" : " mg/dL"
 
 
@@ -95,8 +95,8 @@ extension LiveActivityAttributes.ContentState {
             rotationDegrees: rotationDegrees,
             rotationDegrees: rotationDegrees,
             highGlucose: Double(highGlucose),
             highGlucose: Double(highGlucose),
             lowGlucose: Double(lowGlucose),
             lowGlucose: Double(lowGlucose),
-            cob: cob,
-            iob: iob,
+            cob: Decimal(cob),
+            iob: iob as Decimal,
             lockScreenView: lockScreenView,
             lockScreenView: lockScreenView,
             unit: unit
             unit: unit
         )
         )
@@ -125,7 +125,6 @@ extension LiveActivityAttributes.ContentState {
 
 
 @available(iOS 16.2, *) final class LiveActivityBridge: Injectable, ObservableObject {
 @available(iOS 16.2, *) final class LiveActivityBridge: Injectable, ObservableObject {
     @Injected() private var settingsManager: SettingsManager!
     @Injected() private var settingsManager: SettingsManager!
-    @Injected() private var glucoseStorage: GlucoseStorage!
     @Injected() private var broadcaster: Broadcaster!
     @Injected() private var broadcaster: Broadcaster!
     @Injected() private var storage: FileStorage!
     @Injected() private var storage: FileStorage!
 
 
@@ -136,10 +135,7 @@ extension LiveActivityAttributes.ContentState {
         settingsManager.settings
         settingsManager.settings
     }
     }
 
 
-    var suggestion: Suggestion? {
-        storage.retrieve(OpenAPS.Enact.suggested, as: Suggestion.self)
-    }
-
+    private var determination: OrefDetermination?
     private var currentActivity: ActiveActivity?
     private var currentActivity: ActiveActivity?
     private var latestGlucose: GlucoseStored?
     private var latestGlucose: GlucoseStored?
 
 
@@ -165,6 +161,7 @@ extension LiveActivityAttributes.ContentState {
         }
         }
 
 
         monitorForLiveActivityAuthorizationChanges()
         monitorForLiveActivityAuthorizationChanges()
+        determination = fetchDetermination()
     }
     }
 
 
     private func monitorForLiveActivityAuthorizationChanges() {
     private func monitorForLiveActivityAuthorizationChanges() {
@@ -179,6 +176,19 @@ extension LiveActivityAttributes.ContentState {
         }
         }
     }
     }
 
 
+    private func fetchDetermination() -> OrefDetermination {
+        let context = CoreDataStack.shared.viewContext
+        do {
+            let determinations = try context.fetch(OrefDetermination.fetch(NSPredicate.enactedDetermination))
+            debugPrint("LA Bridge: \(#function) \(DebuggingIdentifiers.succeeded) fetched determinations")
+            guard let latestDetermination = determinations.first else { return OrefDetermination() }
+            return latestDetermination
+        } catch {
+            debugPrint("LA Bridge: \(#function) \(DebuggingIdentifiers.failed) failed to fetch determinaions")
+            return OrefDetermination()
+        }
+    }
+
     /// creates and tries to present a new activity update from the current GlucoseStorage values if live activities are enabled in settings
     /// creates and tries to present a new activity update from the current GlucoseStorage values if live activities are enabled in settings
     /// Ends existing live activities if live activities are not enabled in settings
     /// Ends existing live activities if live activities are not enabled in settings
     private func forceActivityUpdate() {
     private func forceActivityUpdate() {
@@ -297,14 +307,14 @@ extension LiveActivityBridge: GlucoseStoredObserver {
             return
             return
         }
         }
 
 
-        if let suggestion = suggestion {
+        if let determination = determination {
             let content = LiveActivityAttributes.ContentState(
             let content = LiveActivityAttributes.ContentState(
                 new: bg,
                 new: bg,
                 prev: latestGlucose,
                 prev: latestGlucose,
                 mmol: settings.units == .mmolL,
                 mmol: settings.units == .mmolL,
                 chart: fetchedGlucose,
                 chart: fetchedGlucose,
                 settings: settings,
                 settings: settings,
-                suggestion: suggestion
+                determination: determination
             )
             )
 
 
             if let content = content {
             if let content = content {
@@ -316,12 +326,12 @@ extension LiveActivityBridge: GlucoseStoredObserver {
     }
     }
 
 
     private func fetchGlucose() -> [GlucoseStored] {
     private func fetchGlucose() -> [GlucoseStored] {
-        let context = CoreDataStack.shared.persistentContainer.viewContext
+        let context = CoreDataStack.shared.viewContext
         do {
         do {
             let fetchedGlucose = try context
             let fetchedGlucose = try context
                 .fetch(GlucoseStored.fetch(NSPredicate.predicateForSixHoursAgo, ascending: false, fetchLimit: 72))
                 .fetch(GlucoseStored.fetch(NSPredicate.predicateForSixHoursAgo, ascending: false, fetchLimit: 72))
             debugPrint(
             debugPrint(
-                "LA Bridge: \(#function) \(CoreDataStack.identifier) \(DebuggingIdentifiers.failed) failed to fetch glucose"
+                "LA Bridge: \(#function) \(CoreDataStack.identifier) \(DebuggingIdentifiers.succeeded) fetched glucose"
             )
             )
 
 
             return fetchedGlucose
             return fetchedGlucose