Просмотр исходного кода

remove remaining state calls in UI files

call TempTargetCalculations directly
Robert 5 месяцев назад
Родитель
Сommit
2eaf3dd016

+ 0 - 28
Trio/Sources/Modules/Adjustments/AdjustmentsStateModel+Extensions/AdjustmentsStateModel+TempTargets.swift

@@ -384,19 +384,6 @@ extension Adjustments.StateModel {
 
 
     // MARK: - Calculations
     // MARK: - Calculations
 
 
-    /// Computes the half-basal target based on the current settings.
-    func computeHalfBasalTarget(
-        usingTarget initialTarget: Decimal? = nil,
-        usingPercentage initialPercentage: Double? = nil
-    ) -> Double {
-        let tempTargetValue: Decimal = initialTarget ?? tempTargetTarget
-        let adjustmentPercentage = initialPercentage ?? percentage
-        return TempTargetCalculations.computeHalfBasalTarget(
-            target: tempTargetValue,
-            percentage: adjustmentPercentage
-        )
-    }
-
     /// Determines if sensitivity adjustment is enabled based on target.
     /// Determines if sensitivity adjustment is enabled based on target.
     func isAdjustSensEnabled(usingTarget initialTarget: Decimal? = nil) -> Bool {
     func isAdjustSensEnabled(usingTarget initialTarget: Decimal? = nil) -> Bool {
         let target = initialTarget ?? tempTargetTarget
         let target = initialTarget ?? tempTargetTarget
@@ -421,21 +408,6 @@ extension Adjustments.StateModel {
         let maxSens = calcTarget > TempTargetCalculations.normalTarget ? 95 : Double(autosensMax * 100)
         let maxSens = calcTarget > TempTargetCalculations.normalTarget ? 95 : Double(autosensMax * 100)
         return maxSens
         return maxSens
     }
     }
-
-    /// Computes the adjusted percentage for the slider.
-    func computeAdjustedPercentage(
-        usingHBT initialHalfBasalTarget: Decimal? = nil,
-        usingTarget initialTarget: Decimal? = nil
-    ) -> Double {
-        let halfBasalTargetValue = initialHalfBasalTarget ?? halfBasalTarget
-        let calcTarget = initialTarget ?? tempTargetTarget
-        return TempTargetCalculations.computeAdjustedPercentage(
-            halfBasalTarget: halfBasalTargetValue,
-            target: calcTarget,
-            autosensMax: autosensMax
-        )
-    }
-
 }
 }
 
 
 enum TempTargetSensitivityAdjustmentType: String, CaseIterable {
 enum TempTargetSensitivityAdjustmentType: String, CaseIterable {

+ 10 - 2
Trio/Sources/Modules/Adjustments/AdjustmentsStateModel.swift

@@ -157,7 +157,11 @@ extension Adjustments {
             highTTraisesSens = settingsManager.preferences.highTemptargetRaisesSensitivity
             highTTraisesSens = settingsManager.preferences.highTemptargetRaisesSensitivity
             isExerciseModeActive = settingsManager.preferences.exerciseMode
             isExerciseModeActive = settingsManager.preferences.exerciseMode
             lowTTlowersSens = settingsManager.preferences.lowTemptargetLowersSensitivity
             lowTTlowersSens = settingsManager.preferences.lowTemptargetLowersSensitivity
-            percentage = computeAdjustedPercentage()
+            percentage = TempTargetCalculations.computeAdjustedPercentage(
+                halfBasalTarget: halfBasalTarget,
+                target: tempTargetTarget,
+                autosensMax: autosensMax
+            )
             Task {
             Task {
                 await getCurrentGlucoseTarget()
                 await getCurrentGlucoseTarget()
             }
             }
@@ -267,7 +271,11 @@ extension Adjustments.StateModel: SettingsObserver, PreferencesObserver {
         highTTraisesSens = settingsManager.preferences.highTemptargetRaisesSensitivity
         highTTraisesSens = settingsManager.preferences.highTemptargetRaisesSensitivity
         isExerciseModeActive = settingsManager.preferences.exerciseMode
         isExerciseModeActive = settingsManager.preferences.exerciseMode
         lowTTlowersSens = settingsManager.preferences.lowTemptargetLowersSensitivity
         lowTTlowersSens = settingsManager.preferences.lowTemptargetLowersSensitivity
-        percentage = computeAdjustedPercentage()
+        percentage = TempTargetCalculations.computeAdjustedPercentage(
+            halfBasalTarget: halfBasalTarget,
+            target: tempTargetTarget,
+            autosensMax: autosensMax
+        )
         Task {
         Task {
             await getCurrentGlucoseTarget()
             await getCurrentGlucoseTarget()
         }
         }

+ 18 - 4
Trio/Sources/Modules/Adjustments/View/TempTargets/AddTempTargetForm.swift

@@ -103,10 +103,17 @@ struct AddTempTargetForm: View {
                 .onChange(of: state.tempTargetTarget) {
                 .onChange(of: state.tempTargetTarget) {
                     // when first setting a custom sensitivity the settings HBT is used and therefore we calculate the sensitivity
                     // when first setting a custom sensitivity the settings HBT is used and therefore we calculate the sensitivity
                     if state.halfBasalTarget == state.settingHalfBasalTarget {
                     if state.halfBasalTarget == state.settingHalfBasalTarget {
-                        state.percentage = state.computeAdjustedPercentage()
+                        state.percentage = TempTargetCalculations.computeAdjustedPercentage(
+                            halfBasalTarget: state.halfBasalTarget,
+                            target: state.tempTargetTarget,
+                            autosensMax: state.autosensMax
+                        )
                     } else {
                     } else {
                         // else when changing target value and the already adjusted HBT is used, keep the sensitivity and adjust the HBT instead
                         // else when changing target value and the already adjusted HBT is used, keep the sensitivity and adjust the HBT instead
-                        state.halfBasalTarget = Decimal(state.computeHalfBasalTarget())
+                        state.halfBasalTarget = Decimal(TempTargetCalculations.computeHalfBasalTarget(
+                            target: state.tempTargetTarget,
+                            percentage: state.percentage
+                        ))
                     }
                     }
                 }
                 }
             }
             }
@@ -125,7 +132,11 @@ struct AddTempTargetForm: View {
                                 .onChange(of: tempTargetSensitivityAdjustmentType) { _, newValue in
                                 .onChange(of: tempTargetSensitivityAdjustmentType) { _, newValue in
                                     if newValue == .standard {
                                     if newValue == .standard {
                                         state.halfBasalTarget = state.settingHalfBasalTarget
                                         state.halfBasalTarget = state.settingHalfBasalTarget
-                                        state.percentage = state.computeAdjustedPercentage()
+                                        state.percentage = TempTargetCalculations.computeAdjustedPercentage(
+                                            halfBasalTarget: state.halfBasalTarget,
+                                            target: state.tempTargetTarget,
+                                            autosensMax: state.autosensMax
+                                        )
                                     }
                                     }
                                 }
                                 }
                             }
                             }
@@ -147,7 +158,10 @@ struct AddTempTargetForm: View {
                                     Text("\(state.computeSliderHigh(), specifier: "%.0f")%")
                                     Text("\(state.computeSliderHigh(), specifier: "%.0f")%")
                                 } onEditingChanged: { editing in
                                 } onEditingChanged: { editing in
                                     isUsingSlider = editing
                                     isUsingSlider = editing
-                                    state.halfBasalTarget = Decimal(state.computeHalfBasalTarget())
+                                    state.halfBasalTarget = Decimal(TempTargetCalculations.computeHalfBasalTarget(
+                                        target: state.tempTargetTarget,
+                                        percentage: state.percentage
+                                    ))
                                 }
                                 }
                                 .listRowSeparator(.hidden, edges: .top)
                                 .listRowSeparator(.hidden, edges: .top)
                             }
                             }

+ 5 - 1
Trio/Sources/Modules/Adjustments/View/TempTargets/AdjustmentsRootView+TempTargets.swift

@@ -172,7 +172,11 @@ extension Adjustments.RootView {
                 .RawValue ?? Double(state.settingHalfBasalTarget)
                 .RawValue ?? Double(state.settingHalfBasalTarget)
         )
         )
         let percentage = Int(
         let percentage = Int(
-            state.computeAdjustedPercentage(usingHBT: tempTargetHalfBasal, usingTarget: tempTargetValue)
+            TempTargetCalculations.computeAdjustedPercentage(
+                halfBasalTarget: tempTargetHalfBasal,
+                target: tempTargetValue,
+                autosensMax: state.autosensMax
+            )
         )
         )
         let remainingTime = tempTarget.date?.timeIntervalSinceNow ?? 0
         let remainingTime = tempTarget.date?.timeIntervalSinceNow ?? 0
 
 

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

@@ -41,7 +41,11 @@ struct EditTempTargetForm: View {
 
 
         let H = tempTargetHalfBasal
         let H = tempTargetHalfBasal
         let T = tempTargetToEdit.target?.decimalValue ?? 100
         let T = tempTargetToEdit.target?.decimalValue ?? 100
-        let calcPercentage = state.computeAdjustedPercentage(usingHBT: H, usingTarget: T)
+        let calcPercentage = TempTargetCalculations.computeAdjustedPercentage(
+            halfBasalTarget: H,
+            target: T,
+            autosensMax: state.autosensMax
+        )
         _percentage = State(initialValue: calcPercentage)
         _percentage = State(initialValue: calcPercentage)
     }
     }
 
 
@@ -187,15 +191,17 @@ struct EditTempTargetForm: View {
                 .onChange(of: target) {
                 .onChange(of: target) {
                     // percentage = state.computeAdjustedPercentage(usingHBT: halfBasalTarget, usingTarget: target)
                     // percentage = state.computeAdjustedPercentage(usingHBT: halfBasalTarget, usingTarget: target)
                     // target value changes shall not alter the sensitivity, instead calculate new hbt with sensitivity from slider
                     // target value changes shall not alter the sensitivity, instead calculate new hbt with sensitivity from slider
-                    halfBasalTarget = Decimal(state.computeHalfBasalTarget(usingTarget: target, usingPercentage: percentage))
+                    halfBasalTarget = Decimal(
+                        TempTargetCalculations
+                            .computeHalfBasalTarget(target: target, percentage: percentage)
+                    )
                 }
                 }
             }
             }
             .listRowBackground(Color.chart)
             .listRowBackground(Color.chart)
 
 
             if target != TempTargetCalculations.normalTarget {
             if target != TempTargetCalculations.normalTarget {
                 let computedHalfBasalTarget = Decimal(
                 let computedHalfBasalTarget = Decimal(
-                    state
-                        .computeHalfBasalTarget(usingTarget: target, usingPercentage: percentage)
+                    TempTargetCalculations.computeHalfBasalTarget(target: target, percentage: percentage)
                 )
                 )
 
 
                 if state.isAdjustSensEnabled(usingTarget: target) {
                 if state.isAdjustSensEnabled(usingTarget: target) {
@@ -211,9 +217,10 @@ struct EditTempTargetForm: View {
                                     if newValue == .standard {
                                     if newValue == .standard {
                                         halfBasalTarget = nil
                                         halfBasalTarget = nil
                                         hasChanges = true
                                         hasChanges = true
-                                        percentage = state.computeAdjustedPercentage(
-                                            usingHBT: halfBasalTarget,
-                                            usingTarget: target
+                                        percentage = TempTargetCalculations.computeAdjustedPercentage(
+                                            halfBasalTarget: state.settingHalfBasalTarget,
+                                            target: target,
+                                            autosensMax: state.autosensMax
                                         )
                                         )
                                     }
                                     }
                                 }
                                 }
@@ -234,9 +241,9 @@ struct EditTempTargetForm: View {
                                         set: { newValue in
                                         set: { newValue in
                                             percentage = newValue
                                             percentage = newValue
                                             hasChanges = true
                                             hasChanges = true
-                                            halfBasalTarget = Decimal(state.computeHalfBasalTarget(
-                                                usingTarget: target,
-                                                usingPercentage: percentage
+                                            halfBasalTarget = Decimal(TempTargetCalculations.computeHalfBasalTarget(
+                                                target: target,
+                                                percentage: percentage
                                             ))
                                             ))
                                         }
                                         }
                                     ),
                                     ),

+ 0 - 11
Trio/Sources/Modules/Home/HomeStateModel+Setup/TempTargetSetup.swift

@@ -118,15 +118,4 @@ extension Home.StateModel {
             debugPrint("\(DebuggingIdentifiers.failed) \(#file) \(#function) Failed to save Temp Target with error: \(error)")
             debugPrint("\(DebuggingIdentifiers.failed) \(#file) \(#function) Failed to save Temp Target with error: \(error)")
         }
         }
     }
     }
-
-    func computeAdjustedPercentage(halfBasalTargetValue: Decimal, tempTargetValue: Decimal) -> Int {
-        let normalTarget: Decimal = 100
-        let deviationFromNormal = halfBasalTargetValue - normalTarget
-
-        let adjustmentFactor = deviationFromNormal + (tempTargetValue - normalTarget)
-        let adjustmentRatio: Decimal = (deviationFromNormal * adjustmentFactor <= 0) ? autosensMax : deviationFromNormal /
-            adjustmentFactor
-
-        return Int(Double(min(adjustmentRatio, autosensMax) * 100).rounded())
-    }
 }
 }

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

@@ -296,7 +296,7 @@ extension Home {
             if target < 100, state.lowTTlowersSens, state.autosensMax > 1 { showPercentage = true }
             if target < 100, state.lowTTlowersSens, state.autosensMax > 1 { showPercentage = true }
             if showPercentage {
             if showPercentage {
                 percentageString =
                 percentageString =
-                    " \(state.computeAdjustedPercentage(halfBasalTargetValue: effectiveHBT, tempTargetValue: target))%"
+                    " \(Int(TempTargetCalculations.computeAdjustedPercentage(halfBasalTarget: effectiveHBT, target: target, autosensMax: state.autosensMax)))%"
             }
             }
             target = state.units == .mmolL ? target.asMmolL : target
             target = state.units == .mmolL ? target.asMmolL : target
             let targetString = target == 0 ? "" : (fetchedTargetFormatter.string(from: target as NSNumber) ?? "") + " " +
             let targetString = target == 0 ? "" : (fetchedTargetFormatter.string(from: target as NSNumber) ?? "") + " " +