فهرست منبع

ensure if autosensMax gets changed, lowTTLowersSens effect is adapted

Robert 1 سال پیش
والد
کامیت
49166f1ec8

+ 5 - 0
Trio/Sources/Modules/Adjustments/AdjustmentsStateModel.swift

@@ -269,6 +269,11 @@ extension Adjustments.StateModel: SettingsObserver, PreferencesObserver {
         isExerciseModeActive = settingsManager.preferences.exerciseMode
         isExerciseModeActive = settingsManager.preferences.exerciseMode
         lowTTlowersSens = settingsManager.preferences.lowTemptargetLowersSensitivity
         lowTTlowersSens = settingsManager.preferences.lowTemptargetLowersSensitivity
         percentage = computeAdjustedPercentage()
         percentage = computeAdjustedPercentage()
+        // Force lowTTlowersSens off if maxAutosensSetting <= 1
+        if maxAutosensSetting <= 1, lowTTlowersSens == true {
+            lowTTlowersSens = false
+            settingsManager.preferences.lowTemptargetLowersSensitivity = false
+        }
         Task {
         Task {
             await getCurrentGlucoseTarget()
             await getCurrentGlucoseTarget()
         }
         }

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

@@ -255,7 +255,7 @@ extension Home {
             } else { halfBasalTarget = state.settingHalfBasalTarget }
             } else { halfBasalTarget = state.settingHalfBasalTarget }
             var showPercentage = false
             var showPercentage = false
             if target > 100, state.isExerciseModeActive || state.highTTraisesSens { showPercentage = true }
             if target > 100, state.isExerciseModeActive || state.highTTraisesSens { showPercentage = true }
-            if target < 100, state.lowTTlowersSens { showPercentage = true }
+            if target < 100, state.lowTTlowersSens, state.maxAutosensSetting > 1 { showPercentage = true }
             if showPercentage {
             if showPercentage {
                 percentageString =
                 percentageString =
                     " \(state.computeAdjustedPercentage(halfBasalTargetValue: halfBasalTarget, tempTargetValue: target))%" }
                     " \(state.computeAdjustedPercentage(halfBasalTargetValue: halfBasalTarget, tempTargetValue: target))%" }

+ 7 - 1
Trio/Sources/Modules/TargetBehavoir/TargetBehavoirStateModel.swift

@@ -12,10 +12,11 @@ extension TargetBehavoir {
         @Published var sensitivityRaisesTarget: Bool = false
         @Published var sensitivityRaisesTarget: Bool = false
         @Published var resistanceLowersTarget: Bool = false
         @Published var resistanceLowersTarget: Bool = false
         @Published var halfBasalExerciseTarget: Decimal = 160
         @Published var halfBasalExerciseTarget: Decimal = 160
+        @Published var maxAutosensSetting: Decimal = 1
 
 
         override func subscribe() {
         override func subscribe() {
             units = settingsManager.settings.units
             units = settingsManager.settings.units
-
+            maxAutosensSetting = settingsManager.preferences.autosensMax
             subscribePreferencesSetting(\.highTemptargetRaisesSensitivity, on: $highTemptargetRaisesSensitivity) {
             subscribePreferencesSetting(\.highTemptargetRaisesSensitivity, on: $highTemptargetRaisesSensitivity) {
                 highTemptargetRaisesSensitivity = $0 }
                 highTemptargetRaisesSensitivity = $0 }
             subscribePreferencesSetting(\.lowTemptargetLowersSensitivity, on: $lowTemptargetLowersSensitivity) {
             subscribePreferencesSetting(\.lowTemptargetLowersSensitivity, on: $lowTemptargetLowersSensitivity) {
@@ -31,4 +32,9 @@ extension TargetBehavoir.StateModel: SettingsObserver {
     func settingsDidChange(_: TrioSettings) {
     func settingsDidChange(_: TrioSettings) {
         units = settingsManager.settings.units
         units = settingsManager.settings.units
     }
     }
+
+    func preferencesDidChange(_: Preferences) {
+        lowTemptargetLowersSensitivity = settingsManager.preferences.lowTemptargetLowersSensitivity
+        maxAutosensSetting = settingsManager.preferences.autosensMax
+    }
 }
 }

+ 14 - 10
Trio/Sources/Modules/TargetBehavoir/View/TargetBehavoirRootView.swift

@@ -60,7 +60,7 @@ extension TargetBehavoir {
 
 
                 SettingInputSection(
                 SettingInputSection(
                     decimalValue: $decimalPlaceholder,
                     decimalValue: $decimalPlaceholder,
-                    booleanValue: lowTTLowersSensBinding,
+                    booleanValue: effectiveLowTTLowersSensBinding,
                     shouldDisplayHint: $shouldDisplayHint,
                     shouldDisplayHint: $shouldDisplayHint,
                     selectedVerboseHint: Binding(
                     selectedVerboseHint: Binding(
                         get: { selectedVerboseHint },
                         get: { selectedVerboseHint },
@@ -207,25 +207,29 @@ extension TargetBehavoir {
 //            }
 //            }
         }
         }
 
 
-        private var lowTTLowersSensBinding: Binding<Bool> {
+        private var effectiveLowTTLowersSensBinding: Binding<Bool> {
             Binding<Bool>(
             Binding<Bool>(
                 get: {
                 get: {
-                    state.lowTemptargetLowersSensitivity
+                    if state.maxAutosensSetting > 1 {
+                        // Show the *real* user preference
+                        return state.lowTemptargetLowersSensitivity
+                    } else {
+                        // "Mask" it as OFF in the UI
+                        return false
+                    }
                 },
                 },
                 set: { newValue in
                 set: { newValue in
                     if newValue {
                     if newValue {
-                        // Check some condition, e.g. from `settingsManager` or any property
-                        // For example: if state.settings.preferences.autosensMax > 1
-                        // You may need to adapt this to your actual condition:
-                        if state.settings.preferences.autosensMax > 1 {
+                        // User wants to turn it ON
+                        if state.maxAutosensSetting > 1 {
+                            // Condition is valid => set the real model property to true
                             state.lowTemptargetLowersSensitivity = true
                             state.lowTemptargetLowersSensitivity = true
                         } else {
                         } else {
-                            // Disallow enabling and optionally show an alert
+                            // Condition not met => show alert, do NOT turn it on
                             showAutosensMaxAlert = true
                             showAutosensMaxAlert = true
-                            state.lowTemptargetLowersSensitivity = false
                         }
                         }
                     } else {
                     } else {
-                        // Always allow turning it off
+                        // Turning it off is always allowed
                         state.lowTemptargetLowersSensitivity = false
                         state.lowTemptargetLowersSensitivity = false
                     }
                     }
                 }
                 }