Jelajahi Sumber

skipBolusScreenAfterCarbs option

Ivan Valkou 5 tahun lalu
induk
melakukan
6f00ea330b

+ 2 - 1
FreeAPS/Resources/json/defaults/freeaps/freeaps_settings.json

@@ -7,5 +7,6 @@
     "useLocalGlucoseSource": false,
     "localGlucosePort": 8080,
     "debugOptions": false,
-    "insulinReqFraction": 0.7
+    "insulinReqFraction": 0.7,
+    "skipBolusScreenAfterCarbs": false
 }

+ 5 - 0
FreeAPS/Sources/APS/APSManager.swift

@@ -20,6 +20,7 @@ protocol APSManager {
     func enactTempBasal(rate: Double, duration: TimeInterval)
     func makeProfiles() -> AnyPublisher<Bool, Never>
     func determineBasal() -> AnyPublisher<Bool, Never>
+    func determineBasalSync()
     func roundBolus(amount: Decimal) -> Decimal
     var lastError: CurrentValueSubject<Error?, Never> { get }
     func cancelBolus()
@@ -266,6 +267,10 @@ final class BaseAPSManager: APSManager, Injectable {
         return mainPublisher
     }
 
+    func determineBasalSync() {
+        determineBasal().sink { _ in }.store(in: &lifetime)
+    }
+
     func makeProfiles() -> AnyPublisher<Bool, Never> {
         openAPS.makeProfiles(useAutotune: settings.useAutotune)
             .map { tunedProfile in

+ 1 - 0
FreeAPS/Sources/Models/FreeAPSSettings.swift

@@ -10,4 +10,5 @@ struct FreeAPSSettings: JSON {
     var localGlucosePort: Int?
     var debugOptions: Bool?
     var insulinReqFraction: Decimal?
+    var skipBolusScreenAfterCarbs: Bool?
 }

+ 8 - 1
FreeAPS/Sources/Modules/AddCarbs/AddCarbsViewModel.swift

@@ -3,6 +3,7 @@ import SwiftUI
 extension AddCarbs {
     class ViewModel<Provider>: BaseViewModel<Provider>, ObservableObject where Provider: AddCarbsProvider {
         @Injected() var carbsStorage: CarbsStorage!
+        @Injected() var settingsManager: SettingsManager!
         @Injected() var apsManager: APSManager!
         @Published var carbs: Decimal = 0
         @Published var date = Date()
@@ -18,7 +19,13 @@ extension AddCarbs {
             carbsStorage.storeCarbs([
                 CarbsEntry(createdAt: date, carbs: carbs, enteredBy: CarbsEntry.manual)
             ])
-            showModal(for: .bolus(waitForDuggestion: true))
+
+            if settingsManager.settings.skipBolusScreenAfterCarbs ?? false {
+                apsManager.determineBasalSync()
+                showModal(for: nil)
+            } else {
+                showModal(for: .bolus(waitForDuggestion: true))
+            }
         }
     }
 }

+ 1 - 0
FreeAPS/Sources/Modules/AddCarbs/View/AddCarbsRootView.swift

@@ -26,6 +26,7 @@ extension AddCarbs {
                 Section {
                     Button { viewModel.add() }
                     label: { Text("Add") }
+                        .disabled(viewModel.carbs <= 0)
                 }
             }
             .navigationTitle("Add Carbs")

+ 9 - 0
FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorViewModel.swift

@@ -10,6 +10,7 @@ extension PreferencesEditor {
         @Published var unitsIndex = 1
         @Published var allowAnnouncements = false
         @Published var insulinReqFraction: Decimal = 0.7
+        @Published var skipBolusScreenAfterCarbs = false
 
         @Published var decimalFields: [Field<Decimal>] = []
         @Published var boolFields: [Field<Bool>] = []
@@ -26,6 +27,7 @@ extension PreferencesEditor {
             insulinCurveField.value = preferences.curve
             insulinCurveField.settable = self
             insulinReqFraction = settingsManager.settings.insulinReqFraction ?? 0.7
+            skipBolusScreenAfterCarbs = settingsManager.settings.skipBolusScreenAfterCarbs ?? false
 
             $unitsIndex
                 .removeDuplicates()
@@ -48,6 +50,13 @@ extension PreferencesEditor {
                 }
                 .store(in: &lifetime)
 
+            $skipBolusScreenAfterCarbs
+                .removeDuplicates()
+                .sink { [weak self] skip in
+                    self?.settingsManager.settings.skipBolusScreenAfterCarbs = skip
+                }
+                .store(in: &lifetime)
+
             boolFields = [
                 Field(
                     displayName: "Rewind Resets Autosens",

+ 2 - 0
FreeAPS/Sources/Modules/PreferencesEditor/View/PreferencesEditorRootView.swift

@@ -24,6 +24,8 @@ extension PreferencesEditor {
                         Text("Recommended Insulin Fraction")
                         DecimalTextField("", value: $viewModel.insulinReqFraction, formatter: formatter)
                     }
+
+                    Toggle("Skip Bolus screen after carbs", isOn: $viewModel.skipBolusScreenAfterCarbs)
                 }
 
                 Section(header: Text("OpenAPS")) {