BolusCalculatorStateModel.swift 1.4 KB

123456789101112131415161718192021222324252627282930313233
  1. import SwiftUI
  2. extension BolusCalculatorConfig {
  3. final class StateModel: BaseStateModel<Provider> {
  4. @Published var units: GlucoseUnits = .mgdL
  5. @Published var overrideFactor: Decimal = 0
  6. @Published var fattyMeals: Bool = false
  7. @Published var fattyMealFactor: Decimal = 0
  8. @Published var sweetMeals: Bool = false
  9. @Published var sweetMealFactor: Decimal = 0
  10. @Published var displayPresets: Bool = true
  11. @Published var confirmBolusWhenVeryLowGlucose: Bool = false
  12. override func subscribe() {
  13. units = settingsManager.settings.units
  14. subscribeSetting(\.overrideFactor, on: $overrideFactor) { overrideFactor = $0 }
  15. subscribeSetting(\.fattyMeals, on: $fattyMeals) { fattyMeals = $0 }
  16. subscribeSetting(\.displayPresets, on: $displayPresets) { displayPresets = $0 }
  17. subscribeSetting(\.fattyMealFactor, on: $fattyMealFactor) { fattyMealFactor = $0 }
  18. subscribeSetting(\.sweetMeals, on: $sweetMeals) { sweetMeals = $0 }
  19. subscribeSetting(\.sweetMealFactor, on: $sweetMealFactor) { sweetMealFactor = $0 }
  20. subscribeSetting(\.confirmBolus, on: $confirmBolusWhenVeryLowGlucose) { confirmBolusWhenVeryLowGlucose = $0 }
  21. }
  22. }
  23. }
  24. extension BolusCalculatorConfig.StateModel: SettingsObserver {
  25. func settingsDidChange(_: TrioSettings) {
  26. units = settingsManager.settings.units
  27. }
  28. }