SMBSettingsStateModel.swift 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import Observation
  2. import SwiftUI
  3. extension SMBSettings {
  4. final class StateModel: BaseStateModel<Provider> {
  5. @Injected() var settings: SettingsManager!
  6. @Injected() var storage: FileStorage!
  7. var units: GlucoseUnits = .mgdL
  8. @Published var enableSMBAlways: Bool = false
  9. @Published var maxDeltaBGthreshold: Decimal = 0.2
  10. @Published var enableSMBWithCOB: Bool = false
  11. @Published var enableSMBWithTemptarget: Bool = false
  12. @Published var enableSMBAfterCarbs: Bool = false
  13. @Published var allowSMBWithHighTemptarget: Bool = false
  14. @Published var enableSMB_high_bg: Bool = false
  15. @Published var enableSMB_high_bg_target: Decimal = 100
  16. @Published var maxSMBBasalMinutes: Decimal = 30
  17. @Published var smbDeliveryRatio: Decimal = 0.5
  18. @Published var smbInterval: Decimal = 3
  19. @Published var bolusIncrement: Decimal = 0.1 // get this from pump, dafuq?: Bool = false
  20. @Published var enableUAM: Bool = false
  21. @Published var maxUAMSMBBasalMinutes: Decimal = 30
  22. override func subscribe() {
  23. units = settingsManager.settings.units
  24. subscribePreferencesSetting(\.enableSMBAlways, on: $enableSMBAlways) { enableSMBAlways = $0 }
  25. subscribePreferencesSetting(\.maxDeltaBGthreshold, on: $maxDeltaBGthreshold) { maxDeltaBGthreshold = $0 }
  26. subscribePreferencesSetting(\.enableSMBWithCOB, on: $enableSMBWithCOB) { enableSMBWithCOB = $0 }
  27. subscribePreferencesSetting(\.enableSMBWithTemptarget, on: $enableSMBWithTemptarget) { enableSMBWithTemptarget = $0 }
  28. subscribePreferencesSetting(\.enableSMBAfterCarbs, on: $enableSMBAfterCarbs) { enableSMBAfterCarbs = $0 }
  29. subscribePreferencesSetting(\.allowSMBWithHighTemptarget, on: $allowSMBWithHighTemptarget) {
  30. allowSMBWithHighTemptarget = $0 }
  31. subscribePreferencesSetting(\.enableSMB_high_bg, on: $enableSMB_high_bg) { enableSMB_high_bg = $0 }
  32. subscribePreferencesSetting(\.enableSMB_high_bg_target, on: $enableSMB_high_bg_target) {
  33. enableSMB_high_bg_target = $0 }
  34. subscribePreferencesSetting(\.maxSMBBasalMinutes, on: $maxSMBBasalMinutes) { maxSMBBasalMinutes = $0 }
  35. subscribePreferencesSetting(\.smbDeliveryRatio, on: $smbDeliveryRatio) { smbDeliveryRatio = $0 }
  36. subscribePreferencesSetting(\.smbInterval, on: $smbInterval) { smbInterval = $0 }
  37. subscribePreferencesSetting(\.bolusIncrement, on: $bolusIncrement) { bolusIncrement = $0 }
  38. subscribePreferencesSetting(\.enableUAM, on: $enableUAM) { enableUAM = $0 }
  39. subscribePreferencesSetting(\.maxUAMSMBBasalMinutes, on: $maxUAMSMBBasalMinutes) { maxUAMSMBBasalMinutes = $0 }
  40. }
  41. }
  42. }
  43. extension SMBSettings.StateModel: SettingsObserver {
  44. func settingsDidChange(_: FreeAPSSettings) {
  45. units = settingsManager.settings.units
  46. }
  47. }