Explorar o código

Ensure update of percentages in view & form

fix editTT
update percentage in TT strings
cleanup unused Jon variables
harmonize variable naming
Robert hai 1 ano
pai
achega
18291c84ee

+ 11 - 21
FreeAPS/Sources/Modules/Adjustments/AdjustmentsStateModel.swift

@@ -56,16 +56,12 @@ extension Adjustments {
         var scheduledTempTargets: [TempTargetStored] = []
         var percentage: Double = 100
         var maxValue: Decimal = 1.2
-        var minValue: Decimal = 0.15
-        var viewPercantage = false
         var halfBasalTarget: Decimal = 160
         var settingHalfBasalTarget: Decimal = 160
+        var highTTraisesSens: Bool = false
+        var isExerciseModeActive: Bool = false
+        var lowTTlowersSens: Bool = false
         var didSaveSettings: Bool = false
-        var didAdjustSens: Bool = false {
-            didSet {
-                handleAdjustSensToggle()
-            }
-        }
 
         let coredataContext = CoreDataStack.shared.newTaskContext()
         let viewContext = CoreDataStack.shared.persistentContainer.viewContext
@@ -153,9 +149,11 @@ extension Adjustments {
             defaultSmbMinutes = settingsManager.preferences.maxSMBBasalMinutes
             defaultUamMinutes = settingsManager.preferences.maxUAMSMBBasalMinutes
             maxValue = settingsManager.preferences.autosensMax
-            minValue = settingsManager.preferences.autosensMin
             settingHalfBasalTarget = settingsManager.preferences.halfBasalExerciseTarget
             halfBasalTarget = settingsManager.preferences.halfBasalExerciseTarget
+            highTTraisesSens = settingsManager.preferences.highTemptargetRaisesSensitivity
+            isExerciseModeActive = settingsManager.preferences.exerciseMode
+            lowTTlowersSens = settingsManager.preferences.lowTemptargetLowersSensitivity
             percentage = computeAdjustedPercentage()
             Task {
                 await getCurrentGlucoseTarget()
@@ -980,13 +978,6 @@ extension Adjustments.StateModel {
         halfBasalTarget = settingHalfBasalTarget
     }
 
-    func handleAdjustSensToggle() {
-        if !didAdjustSens {
-            halfBasalTarget = settingHalfBasalTarget
-            percentage = computeAdjustedPercentage(usingHBT: settingHalfBasalTarget)
-        }
-    }
-
     func computeHalfBasalTarget(
         usingTarget initialTarget: Decimal? = nil,
         usingPercentage initialPercentage: Double? = nil
@@ -1003,12 +994,9 @@ extension Adjustments.StateModel {
     }
 
     func isAdjustSensEnabled(usingTarget initialTarget: Decimal? = nil) -> Bool {
-        let shouldRaiseSensitivity = settingsManager.preferences.highTemptargetRaisesSensitivity
-        let isExerciseModeActive = settingsManager.preferences.exerciseMode
-        let shouldlowerSensitivity = settingsManager.preferences.lowTemptargetLowersSensitivity
         let target = initialTarget ?? tempTargetTarget
-        if target < normalTarget, shouldlowerSensitivity { return true }
-        if target > normalTarget, shouldRaiseSensitivity || isExerciseModeActive { return true }
+        if target < normalTarget, lowTTlowersSens { return true }
+        if target > normalTarget, highTTraisesSens || isExerciseModeActive { return true }
         return false
     }
 
@@ -1054,9 +1042,11 @@ extension Adjustments.StateModel: SettingsObserver, PreferencesObserver {
         defaultSmbMinutes = settingsManager.preferences.maxSMBBasalMinutes
         defaultUamMinutes = settingsManager.preferences.maxUAMSMBBasalMinutes
         maxValue = settingsManager.preferences.autosensMax
-        minValue = settingsManager.preferences.autosensMin
         settingHalfBasalTarget = settingsManager.preferences.halfBasalExerciseTarget
         halfBasalTarget = settingsManager.preferences.halfBasalExerciseTarget
+        highTTraisesSens = settingsManager.preferences.highTemptargetRaisesSensitivity
+        isExerciseModeActive = settingsManager.preferences.exerciseMode
+        lowTTlowersSens = settingsManager.preferences.lowTemptargetLowersSensitivity
         percentage = computeAdjustedPercentage()
         Task {
             await getCurrentGlucoseTarget()

+ 17 - 10
FreeAPS/Sources/Modules/Adjustments/View/TempTargets/EditTempTargetForm.swift

@@ -16,7 +16,7 @@ struct EditTempTargetForm: View {
     @State private var target: Decimal
     @State private var duration: Decimal
     @State private var date: Date
-    @State private var halfBasalTarget: Decimal
+    @State private var halfBasalTarget: Decimal?
     @State private var percentage: Double
 
     @State private var hasChanges = false
@@ -32,16 +32,19 @@ struct EditTempTargetForm: View {
         _target = State(initialValue: tempTargetToEdit.target?.decimalValue ?? 0)
         _duration = State(initialValue: tempTargetToEdit.duration?.decimalValue ?? 0)
         _date = State(initialValue: tempTargetToEdit.date ?? Date())
-        _halfBasalTarget = State(initialValue: tempTargetToEdit.halfBasalTarget?.decimalValue ?? 160)
+        _halfBasalTarget = State(initialValue: tempTargetToEdit.halfBasalTarget?.decimalValue ?? state.settingHalfBasalTarget)
         _isPreset = State(initialValue: tempTargetToEdit.isPreset)
         _isEnabled = State(initialValue: tempTargetToEdit.enabled)
 
-        if let hbt = tempTargetToEdit.halfBasalTarget?.decimalValue {
-            let H = hbt
-            let T = tempTargetToEdit.target?.decimalValue ?? 100
-            let calcPercentage = state.computeAdjustedPercentage(usingHBT: H, usingTarget: T)
-            _percentage = State(initialValue: calcPercentage)
-        } else { _percentage = State(initialValue: 100) }
+        var tempTargetHalfBasal: Decimal = state.settingHalfBasalTarget
+        if tempTargetToEdit.halfBasalTarget != nil {
+            tempTargetHalfBasal = tempTargetToEdit.halfBasalTarget as! Decimal
+        }
+
+        let H = tempTargetHalfBasal
+        let T = tempTargetToEdit.target?.decimalValue ?? 100
+        let calcPercentage = state.computeAdjustedPercentage(usingHBT: H, usingTarget: T)
+        _percentage = State(initialValue: calcPercentage)
     }
 
     var color: LinearGradient {
@@ -174,7 +177,7 @@ struct EditTempTargetForm: View {
                                 .pickerStyle(MenuPickerStyle())
                                 .onChange(of: tempTargetSensitivityAdjustmentType) { _, newValue in
                                     if newValue == .standard {
-                                        halfBasalTarget = state.settingHalfBasalTarget
+                                        halfBasalTarget = nil
                                         hasChanges = true
                                         percentage = state.computeAdjustedPercentage(
                                             usingHBT: halfBasalTarget,
@@ -363,7 +366,11 @@ struct EditTempTargetForm: View {
         tempTarget.duration = NSDecimalNumber(decimal: duration)
         tempTarget.date = date
         tempTarget.isUploadedToNS = false
-        tempTarget.halfBasalTarget = NSDecimalNumber(decimal: halfBasalTarget)
+        if let halfBasalValue = halfBasalTarget {
+            tempTarget.halfBasalTarget = NSDecimalNumber(decimal: halfBasalValue)
+        } else {
+            tempTarget.halfBasalTarget = nil
+        }
     }
 
     private func toggleScrollWheel(_ toggle: Bool) -> Bool {

+ 14 - 2
FreeAPS/Sources/Modules/Home/HomeStateModel.swift

@@ -39,8 +39,9 @@ extension Home {
         var tempTarget: TempTarget?
         var highTTraisesSens: Bool = false
         var lowTTlowersSens: Bool = false
-        var exerciseMode: Bool = false
+        var isExerciseModeActive: Bool = false
         var settingHalfBasalTarget: Decimal = 160
+        var percentage: Int = 100
         var setupPump = false
         var errorMessage: String?
         var errorDate: Date?
@@ -260,6 +261,7 @@ extension Home {
             broadcaster.register(GlucoseObserver.self, observer: self)
             broadcaster.register(DeterminationObserver.self, observer: self)
             broadcaster.register(SettingsObserver.self, observer: self)
+            broadcaster.register(PreferencesObserver.self, observer: self)
             broadcaster.register(PumpSettingsObserver.self, observer: self)
             broadcaster.register(BasalProfileObserver.self, observer: self)
             broadcaster.register(PumpReservoirObserver.self, observer: self)
@@ -356,10 +358,11 @@ extension Home {
             cgmAvailable = fetchGlucoseManager.cgmGlucoseSourceType != CGMType.none
             showCarbsRequiredBadge = settingsManager.settings.showCarbsRequiredBadge
             forecastDisplayType = settingsManager.settings.forecastDisplayType
+            isExerciseModeActive = settingsManager.preferences.exerciseMode
             highTTraisesSens = settingsManager.preferences.highTemptargetRaisesSensitivity
             lowTTlowersSens = settingsManager.preferences.lowTemptargetLowersSensitivity
-            exerciseMode = settingsManager.preferences.exerciseMode
             settingHalfBasalTarget = settingsManager.preferences.halfBasalExerciseTarget
+            maxValue = settingsManager.preferences.autosensMax
         }
 
         func addPump(_ type: PumpConfig.PumpType) {
@@ -537,6 +540,7 @@ extension Home.StateModel:
     GlucoseObserver,
     DeterminationObserver,
     SettingsObserver,
+    PreferencesObserver,
     PumpSettingsObserver,
     BasalProfileObserver,
     PumpReservoirObserver,
@@ -576,6 +580,14 @@ extension Home.StateModel:
         setupBatteryArray()
     }
 
+    func preferencesDidChange(_: Preferences) {
+        maxValue = settingsManager.preferences.autosensMax
+        settingHalfBasalTarget = settingsManager.preferences.halfBasalExerciseTarget
+        highTTraisesSens = settingsManager.preferences.highTemptargetRaisesSensitivity
+        isExerciseModeActive = settingsManager.preferences.exerciseMode
+        lowTTlowersSens = settingsManager.preferences.lowTemptargetLowersSensitivity
+    }
+
     // TODO: is this ever really triggered? react to MOC changes?
     func pumpHistoryDidUpdate(_: [PumpHistoryEvent]) {
         displayPumpStatusHighlightMessage()

+ 1 - 1
FreeAPS/Sources/Modules/Home/View/HomeRootView.swift

@@ -259,7 +259,7 @@ extension Home {
                 halfBasalTarget = latestTempTarget.halfBasalTarget as! Decimal
             } else { halfBasalTarget = state.settingHalfBasalTarget }
             var showPercentage = false
-            if target > 100, state.exerciseMode || state.highTTraisesSens { showPercentage = true }
+            if target > 100, state.isExerciseModeActive || state.highTTraisesSens { showPercentage = true }
             if target < 100, state.lowTTlowersSens { showPercentage = true }
             if showPercentage {
                 percentageString =