import SwiftUI extension StatConfig { final class StateModel: BaseStateModel { @Published var overrideHbA1cUnit = false @Published var low: Decimal = 4 / 0.0555 @Published var high: Decimal = 10 / 0.0555 @Published var hours: Decimal = 6 @Published var xGridLines = false @Published var yGridLines: Bool = false @Published var oneDimensionalGraph = false @Published var rulerMarks: Bool = false var units: GlucoseUnits = .mmolL override func subscribe() { let units = settingsManager.settings.units self.units = units subscribeSetting(\.overrideHbA1cUnit, on: $overrideHbA1cUnit) { overrideHbA1cUnit = $0 } subscribeSetting(\.xGridLines, on: $xGridLines) { xGridLines = $0 } subscribeSetting(\.yGridLines, on: $yGridLines) { yGridLines = $0 } subscribeSetting(\.rulerMarks, on: $rulerMarks) { rulerMarks = $0 } subscribeSetting(\.oneDimensionalGraph, on: $oneDimensionalGraph) { oneDimensionalGraph = $0 } subscribeSetting(\.low, on: $low, initial: { let value = max(min($0, 90), 40) low = units == .mmolL ? value.asMmolL : value }, map: { guard units == .mmolL else { return $0 } return $0.asMgdL }) subscribeSetting(\.high, on: $high, initial: { let value = max(min($0, 270), 110) high = units == .mmolL ? value.asMmolL : value }, map: { guard units == .mmolL else { return $0 } return $0.asMgdL }) subscribeSetting(\.hours, on: $hours.map(Int.init), initial: { let value = max(min($0, 24), 2) hours = Decimal(value) }, map: { $0 }) } } }