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

Clamp settings values instead of just performing max-value guard

Deniz Cengiz 1 год назад
Родитель
Сommit
62d3100528
1 измененных файлов с 47 добавлено и 19 удалено
  1. 47 19
      Trio/Sources/Modules/Onboarding/OnboardingStateModel.swift

+ 47 - 19
Trio/Sources/Modules/Onboarding/OnboardingStateModel.swift

@@ -696,34 +696,62 @@ extension Onboarding {
         func applyToSettings() {
         func applyToSettings() {
             var settingsCopy = settingsManager.settings
             var settingsCopy = settingsManager.settings
             settingsCopy.units = units
             settingsCopy.units = units
-            
+
             // ensure existing values cannot exceed new guardrails
             // ensure existing values cannot exceed new guardrails
             if !isFreshTrioInstall {
             if !isFreshTrioInstall {
                 let providedSettings = settingsProvider.settings
                 let providedSettings = settingsProvider.settings
-                settingsCopy.lowGlucose = min(settingsCopy.lowGlucose, providedSettings.lowGlucose.max)
-                settingsCopy.highGlucose = min(settingsCopy.highGlucose, providedSettings.highGlucose.max)
-                settingsCopy.carbsRequiredThreshold = min(
+
+                settingsCopy.lowGlucose = max(
+                    min(settingsCopy.lowGlucose, providedSettings.lowGlucose.max),
+                    providedSettings.lowGlucose.min
+                )
+                settingsCopy.highGlucose = max(
+                    min(settingsCopy.highGlucose, providedSettings.highGlucose.max),
+                    providedSettings.highGlucose.min
+                )
+                settingsCopy.carbsRequiredThreshold = max(min(
                     settingsCopy.carbsRequiredThreshold,
                     settingsCopy.carbsRequiredThreshold,
                     providedSettings.carbsRequiredThreshold.max
                     providedSettings.carbsRequiredThreshold.max
-                )
-                settingsCopy.individualAdjustmentFactor = min(
+                ), providedSettings.carbsRequiredThreshold.min)
+                settingsCopy.individualAdjustmentFactor = max(min(
                     settingsCopy.individualAdjustmentFactor,
                     settingsCopy.individualAdjustmentFactor,
                     providedSettings.individualAdjustmentFactor.max
                     providedSettings.individualAdjustmentFactor.max
+                ), providedSettings.individualAdjustmentFactor.min)
+                settingsCopy.timeCap = max(min(settingsCopy.timeCap, providedSettings.timeCap.max), providedSettings.timeCap.min)
+                settingsCopy.minuteInterval = max(
+                    min(settingsCopy.minuteInterval, providedSettings.minuteInterval.max),
+                    providedSettings.minuteInterval.min
+                )
+                settingsCopy.delay = max(min(settingsCopy.delay, providedSettings.delay.max), providedSettings.delay.min)
+                settingsCopy.high = max(min(settingsCopy.high, providedSettings.high.max), providedSettings.high.min)
+                settingsCopy.low = max(min(settingsCopy.low, providedSettings.low.max), providedSettings.low.min)
+                settingsCopy.hours = max(
+                    min(settingsCopy.hours, Int(providedSettings.hours.max)),
+                    Int(providedSettings.hours.min)
+                )
+                settingsCopy.maxCarbs = max(
+                    min(settingsCopy.maxCarbs, providedSettings.maxCarbs.max),
+                    providedSettings.maxCarbs.min
+                )
+                settingsCopy.maxFat = max(min(settingsCopy.maxFat, providedSettings.maxFat.max), providedSettings.maxFat.min)
+                settingsCopy.maxProtein = max(
+                    min(settingsCopy.maxProtein, providedSettings.maxProtein.max),
+                    providedSettings.maxProtein.min
+                )
+                settingsCopy.overrideFactor = max(
+                    min(settingsCopy.overrideFactor, providedSettings.overrideFactor.max),
+                    providedSettings.overrideFactor.min
+                )
+                settingsCopy.fattyMealFactor = max(
+                    min(settingsCopy.fattyMealFactor, providedSettings.fattyMealFactor.max),
+                    providedSettings.fattyMealFactor.min
+                )
+                settingsCopy.sweetMealFactor = max(
+                    min(settingsCopy.sweetMealFactor, providedSettings.sweetMealFactor.max),
+                    providedSettings.sweetMealFactor.min
                 )
                 )
-                settingsCopy.timeCap = min(settingsCopy.timeCap, providedSettings.timeCap.max)
-                settingsCopy.minuteInterval = min(settingsCopy.minuteInterval, providedSettings.minuteInterval.max)
-                settingsCopy.delay = min(settingsCopy.delay, providedSettings.delay.max)
-                settingsCopy.high = min(settingsCopy.high, providedSettings.high.max)
-                settingsCopy.low = min(settingsCopy.low, providedSettings.low.max)
-                settingsCopy.hours = min(settingsCopy.hours, Int(providedSettings.hours.max))
-                settingsCopy.maxCarbs = min(settingsCopy.maxCarbs, providedSettings.maxCarbs.max)
-                settingsCopy.maxFat = min(settingsCopy.maxFat, providedSettings.maxFat.max)
-                settingsCopy.maxProtein = min(settingsCopy.maxProtein, providedSettings.maxProtein.max)
-                settingsCopy.overrideFactor = min(settingsCopy.overrideFactor, providedSettings.overrideFactor.max)
-                settingsCopy.fattyMealFactor = min(settingsCopy.fattyMealFactor, providedSettings.fattyMealFactor.max)
-                settingsCopy.sweetMealFactor = min(settingsCopy.sweetMealFactor, providedSettings.sweetMealFactor.max)
             }
             }
-            
+
             settingsManager.settings = settingsCopy
             settingsManager.settings = settingsCopy
         }
         }