Explorar o código

Revert "fix target picker for addOverrideForm, ..."

This reverts commit 885439c574fbad17a0e9c73593891aa24954f959.
Mike Plante hai 1 ano
pai
achega
f37734168d

+ 1 - 1
FreeAPS/Sources/Modules/OverrideConfig/OverrideStateModel.swift

@@ -1122,7 +1122,7 @@ struct TargetPicker: View {
                     get: { OverrideConfig.StateModel.roundTargetToStep(selection, targetStep) },
                     set: {
                         selection = $0
-                        hasChanges?.wrappedValue = true
+                        hasChanges?.wrappedValue = true // This safely updates if hasChanges is provided
                     }
                 ), label: Text("")) {
                     ForEach(options, id: \.self) { option in

+ 1 - 4
FreeAPS/Sources/Modules/OverrideConfig/View/AddOverrideForm.swift

@@ -68,10 +68,7 @@ struct AddOverrideForm: View {
                     )
                 }
             }
-            .onAppear {
-                targetStep = state.units == .mgdL ? 5 : 9
-                state.target = state.normalTarget
-            }
+            .onAppear { targetStep = state.units == .mgdL ? 5 : 9 }
             .sheet(isPresented: $state.isHelpSheetPresented) {
                 NavigationStack {
                     List {

+ 22 - 0
FreeAPS/Sources/Modules/OverrideConfig/View/AddTempTargetForm.swift

@@ -349,6 +349,28 @@ struct AddTempTargetForm: View {
         return "\(formattedValue) \(state.units.rawValue)"
     }
 
+    private func roundTargetToStep(_ target: Decimal, _ step: Decimal) -> Decimal {
+        // Convert target and step to NSDecimalNumber
+        guard let targetValue = NSDecimalNumber(decimal: target).doubleValue as Double?,
+              let stepValue = NSDecimalNumber(decimal: step).doubleValue as Double?
+        else {
+            print("Failed to unwrap target or step as NSDecimalNumber")
+            return target
+        }
+
+        // Perform the remainder check using truncatingRemainder
+        let remainder = Decimal(targetValue.truncatingRemainder(dividingBy: stepValue))
+
+        if remainder != 0 {
+            // Calculate how much to adjust (up or down) based on the remainder
+            let adjustment = step - remainder
+            return target + adjustment
+        }
+
+        // Return the original target if no adjustment is needed
+        return target
+    }
+
     private func toggleScrollWheel(_ toggle: Bool) -> Bool {
         displayPickerDuration = false
         displayPickerTarget = false