polscm32 2 سال پیش
والد
کامیت
4c2a0c2b61

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 5 - 6
FreeAPS/Sources/APS/APSManager.swift


+ 1 - 1
FreeAPS/Sources/Modules/Bolus/BolusStateModel.swift

@@ -198,7 +198,7 @@ extension Bolus {
 
         private func fetchDetermination() {
             do {
-                determination = try context.fetch(OrefDetermination.fetch(NSPredicate.predicateFor30MinAgoForDetermination))
+                determination = try context.fetch(OrefDetermination.fetch(NSPredicate.enactedDetermination))
                 debugPrint(
                     "Bolus State: \(#function) \(CoreDataStack.identifier) \(DebuggingIdentifiers.succeeded) fetched determinations"
                 )

+ 3 - 18
FreeAPS/Sources/Modules/Home/HomeStateModel.swift

@@ -14,9 +14,7 @@ extension Home {
         @Published var glucose: [BloodGlucose] = []
         @Published var manualGlucose: [BloodGlucose] = []
         @Published var announcement: [Announcement] = []
-        @Published var suggestion: Suggestion?
         @Published var uploadStats = false
-        @Published var enactedSuggestion: Suggestion?
         @Published var recentGlucose: BloodGlucose?
         @Published var glucoseDelta: Int?
         @Published var tempBasals: [PumpHistoryEvent] = []
@@ -95,14 +93,11 @@ extension Home {
             filterCarbs()
             filterFpus()
 
-            suggestion = provider.suggestion
             uploadStats = settingsManager.settings.uploadStats
-            enactedSuggestion = provider.enactedSuggestion
             units = settingsManager.settings.units
             allowManualTemp = !settingsManager.settings.closedLoop
             closedLoop = settingsManager.settings.closedLoop
             lastLoopDate = apsManager.lastLoopDate
-            carbsRequired = suggestion?.carbsReq
             alarm = provider.glucoseStorage.alarm
             manualTempBasal = apsManager.isManualTempBasal
             setupCurrentTempTarget()
@@ -116,17 +111,14 @@ extension Home {
             thresholdLines = settingsManager.settings.rulerMarks
             tins = settingsManager.settings.tins
 
-            cob = provider.suggestion?.cob ?? 0
-
             broadcaster.register(GlucoseObserver.self, observer: self)
-            broadcaster.register(SuggestionObserver.self, observer: self)
+            broadcaster.register(DeterminationObserver.self, observer: self)
             broadcaster.register(SettingsObserver.self, observer: self)
             broadcaster.register(PumpHistoryObserver.self, observer: self)
             broadcaster.register(PumpSettingsObserver.self, observer: self)
             broadcaster.register(BasalProfileObserver.self, observer: self)
             broadcaster.register(TempTargetsObserver.self, observer: self)
             broadcaster.register(CarbsObserver.self, observer: self)
-            broadcaster.register(EnactedSuggestionObserver.self, observer: self)
             broadcaster.register(PumpBatteryObserver.self, observer: self)
             broadcaster.register(PumpReservoirObserver.self, observer: self)
 
@@ -434,14 +426,13 @@ extension Home {
 
 extension Home.StateModel:
     GlucoseObserver,
-    SuggestionObserver,
+    DeterminationObserver,
     SettingsObserver,
     PumpHistoryObserver,
     PumpSettingsObserver,
     BasalProfileObserver,
     TempTargetsObserver,
     CarbsObserver,
-    EnactedSuggestionObserver,
     PumpBatteryObserver,
     PumpReservoirObserver,
     PumpTimeZoneObserver
@@ -450,9 +441,7 @@ extension Home.StateModel:
         setupGlucose()
     }
 
-    func suggestionDidUpdate(_ suggestion: Suggestion) {
-        self.suggestion = suggestion
-        carbsRequired = suggestion.carbsReq
+    func determinationDidUpdate(_: Determination) {
         waitForSuggestion = false
     }
 
@@ -500,10 +489,6 @@ extension Home.StateModel:
         filterCarbs()
     }
 
-    func enactedSuggestionDidUpdate(_ suggestion: Suggestion) {
-        enactedSuggestion = suggestion
-    }
-
     func pumpBatteryDidChange(_: Battery) {
         setupBattery()
     }

+ 14 - 15
FreeAPS/Sources/Modules/Home/View/Chart/MainChartView.swift

@@ -51,8 +51,6 @@ struct MainChartView: View {
     @Binding var manualGlucose: [BloodGlucose]
     @Binding var fpusForChart: [CarbsEntry]
     @Binding var units: GlucoseUnits
-    @Binding var eventualBG: Int?
-    @Binding var suggestion: Suggestion?
     @Binding var tempBasals: [PumpHistoryEvent]
     @Binding var boluses: [PumpHistoryEvent]
     @Binding var suspensions: [PumpHistoryEvent]
@@ -265,7 +263,8 @@ extension MainChartView {
             .onChange(of: didAppearTrigger) { _ in
                 calculatePredictions()
                 calculateTTs()
-            }.onChange(of: suggestion) { _ in
+            }
+            .onChange(of: determinations.map(\.id)) { _ in
                 calculatePredictions()
             }
             .onReceive(
@@ -761,18 +760,18 @@ extension MainChartView {
     }
 
     private func calculatePredictions() {
-        guard let suggestion = suggestion, let deliveredAt = suggestion.deliverAt else { return }
-        let uamPredictions = suggestion.predictions?.uam ?? []
-        let iobPredictions = suggestion.predictions?.iob ?? []
-        let cobPredictions = suggestion.predictions?.cob ?? []
-        let ztPredictions = suggestion.predictions?.zt ?? []
-
-        let uam = addPredictions(uamPredictions, type: .uam, deliveredAt: deliveredAt, endMarker: endMarker)
-        let iob = addPredictions(iobPredictions, type: .iob, deliveredAt: deliveredAt, endMarker: endMarker)
-        let cob = addPredictions(cobPredictions, type: .cob, deliveredAt: deliveredAt, endMarker: endMarker)
-        let zt = addPredictions(ztPredictions, type: .zt, deliveredAt: deliveredAt, endMarker: endMarker)
-
-        Predictions = uam + iob + cob + zt
+//        guard let suggestion = suggestion, let deliveredAt = suggestion.deliverAt else { return }
+//        let uamPredictions = suggestion.predictions?.uam ?? []
+//        let iobPredictions = suggestion.predictions?.iob ?? []
+//        let cobPredictions = suggestion.predictions?.cob ?? []
+//        let ztPredictions = suggestion.predictions?.zt ?? []
+//
+//        let uam = addPredictions(uamPredictions, type: .uam, deliveredAt: deliveredAt, endMarker: endMarker)
+//        let iob = addPredictions(iobPredictions, type: .iob, deliveredAt: deliveredAt, endMarker: endMarker)
+//        let cob = addPredictions(cobPredictions, type: .cob, deliveredAt: deliveredAt, endMarker: endMarker)
+//        let zt = addPredictions(ztPredictions, type: .zt, deliveredAt: deliveredAt, endMarker: endMarker)
+//
+//        Predictions = uam + iob + cob + zt
     }
 
     private func calculateTempBasals() {

+ 1 - 3
FreeAPS/Sources/Modules/Home/View/Header/LoopView.swift

@@ -8,11 +8,9 @@ struct LoopView: View {
         static let lag: TimeInterval = 30
     }
 
-    // TODO: -fetch only enacted determinations
-
     @FetchRequest(
         fetchRequest: OrefDetermination
-            .fetch(NSPredicate.predicateFor30MinAgoForDetermination)
+            .fetch(NSPredicate.enactedDetermination)
     ) var determination: FetchedResults<OrefDetermination>
 
     @Binding var closedLoop: Bool

+ 12 - 22
FreeAPS/Sources/Modules/Home/View/HomeRootView.swift

@@ -45,7 +45,7 @@ extension Home {
         @FetchRequest(
             entity: OrefDetermination.entity(),
             sortDescriptors: [NSSortDescriptor(key: "deliverAt", ascending: false)],
-            predicate: NSPredicate.predicateFor30MinAgoForDetermination,
+            predicate: NSPredicate.enactedDetermination,
             animation: Animation.bouncy
         ) var determination: FetchedResults<OrefDetermination>
 
@@ -373,8 +373,6 @@ extension Home {
                     manualGlucose: $state.manualGlucose,
                     fpusForChart: $state.fpusForChart,
                     units: $state.units,
-                    eventualBG: $state.eventualBG,
-                    suggestion: $state.suggestion,
                     tempBasals: $state.tempBasals,
                     boluses: $state.boluses,
                     suspensions: $state.suspensions,
@@ -809,10 +807,14 @@ extension Home {
             ZStack(alignment: .bottom) {
                 TabView {
                     let carbsRequiredBadge: String? = {
-                        guard let carbsRequired = state.carbsRequired else { return nil }
-                        return carbsRequired > state.settingsManager.settings
-                            .carbsRequiredThreshold ? "\(numberFormatter.string(from: carbsRequired as NSNumber) ?? "") " +
-                            NSLocalizedString("g", comment: "Short representation of grams") : nil
+                        guard let carbsRequired = determination.first?.carbsRequired as? Decimal else { return nil }
+                        if carbsRequired > state.settingsManager.settings.carbsRequiredThreshold {
+                            let numberAsNSNumber = NSDecimalNumber(decimal: carbsRequired)
+                            let formattedNumber = numberFormatter.string(from: numberAsNSNumber) ?? ""
+                            return formattedNumber + " g"
+                        } else {
+                            return nil
+                        }
                     }()
 
                     NavigationStack { mainView() }
@@ -899,21 +901,9 @@ extension Home {
 
             let dateFormatter = DateFormatter()
             dateFormatter.timeStyle = .short
-            if state.closedLoop
-            {
-                statusTitle = NSLocalizedString("Oref Determination enacted at", comment: "Headline in enacted pop up") + " " +
-                    dateFormatter
-                    .string(from: determination.timestamp ?? Date())
-            } else {
-                statusTitle = NSLocalizedString("Determinated at", comment: "Headline in suggested pop up") + " " +
-                    dateFormatter
-                    .string(from: determination.deliverAt ?? Date())
-            }
-        }
-
-        func convertToMmolL(_ value: Decimal) -> Decimal {
-            // Example conversion rate, adjust according to your actual conversion logic
-            value / Decimal(18.01559)
+            statusTitle = NSLocalizedString("Oref Determination enacted at", comment: "Headline in enacted pop up") + " " +
+                dateFormatter
+                .string(from: determination.deliverAt ?? Date())
         }
     }
 }

+ 1 - 1
Model/Helper/Determination+helper.swift

@@ -24,6 +24,6 @@ extension OrefDetermination {
 extension NSPredicate {
     static var enactedDetermination: NSPredicate {
         let date = Date.halfHourAgo
-        return NSPredicate(format: "enacted == true AND deliverAt >= %@", date as NSDate)
+        return NSPredicate(format: "received == %@ AND deliverAt >= %@", true as NSNumber, date as NSDate)
     }
 }