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 xGridLines = false @Published var yGridLines: Bool = false @Published var oneDimensionalGraph = false @Published var rulerMarks: Bool = false @Published var skipBolusScreenAfterCarbs: Bool = false @Published var useFPUconversion: Bool = true @Published var tins: Bool = false @Published var historyLayout: HistoryLayout = .twoTabs 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(\.useFPUconversion, on: $useFPUconversion) { useFPUconversion = $0 } subscribeSetting(\.tins, on: $tins) { tins = $0 } subscribeSetting(\.skipBolusScreenAfterCarbs, on: $skipBolusScreenAfterCarbs) { skipBolusScreenAfterCarbs = $0 } subscribeSetting(\.oneDimensionalGraph, on: $oneDimensionalGraph) { oneDimensionalGraph = $0 } subscribeSetting(\.historyLayout, on: $historyLayout) { historyLayout = $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 }) } } }