@@ -20,9 +20,9 @@ public struct LoopSettings: Equatable {
2020
2121 public var glucoseTargetRangeSchedule : GlucoseRangeSchedule ?
2222
23- public var preMealTargetRange : DoubleRange ?
23+ public var preMealTargetRange : ClosedRange < HKQuantity > ?
2424
25- public var legacyWorkoutTargetRange : DoubleRange ?
25+ public var legacyWorkoutTargetRange : ClosedRange < HKQuantity > ?
2626
2727 public var indefiniteWorkoutOverrideEnabledDate : Date ?
2828
@@ -154,12 +154,12 @@ extension LoopSettings {
154154 }
155155
156156 private func makePreMealOverride( beginningAt date: Date = Date ( ) , for duration: TimeInterval ) -> TemporaryScheduleOverride ? {
157- guard let preMealTargetRange = preMealTargetRange, let unit = glucoseUnit else {
157+ guard let preMealTargetRange = preMealTargetRange else {
158158 return nil
159159 }
160160 return TemporaryScheduleOverride (
161161 context: . preMeal,
162- settings: TemporaryScheduleOverrideSettings ( unit : unit , targetRange: preMealTargetRange) ,
162+ settings: TemporaryScheduleOverrideSettings ( targetRange: preMealTargetRange) ,
163163 startDate: date,
164164 duration: . finite( duration) ,
165165 enactTrigger: . local,
@@ -173,7 +173,7 @@ extension LoopSettings {
173173 }
174174
175175 public mutating func legacyWorkoutOverride( beginningAt date: Date = Date ( ) , for duration: TimeInterval ) -> TemporaryScheduleOverride ? {
176- guard let legacyWorkoutTargetRange = legacyWorkoutTargetRange, let unit = glucoseUnit else {
176+ guard let legacyWorkoutTargetRange = legacyWorkoutTargetRange else {
177177 return nil
178178 }
179179
@@ -183,7 +183,7 @@ extension LoopSettings {
183183
184184 return TemporaryScheduleOverride (
185185 context: . legacyWorkout,
186- settings: TemporaryScheduleOverrideSettings ( unit : unit , targetRange: legacyWorkoutTargetRange) ,
186+ settings: TemporaryScheduleOverrideSettings ( targetRange: legacyWorkoutTargetRange) ,
187187 startDate: date,
188188 duration: duration. isInfinite ? . indefinite : . finite( duration) ,
189189 enactTrigger: . local,
@@ -216,6 +216,7 @@ extension LoopSettings {
216216extension LoopSettings : RawRepresentable {
217217 public typealias RawValue = [ String : Any ]
218218 private static let version = 1
219+ fileprivate static let codingGlucoseUnit = HKUnit . milligramsPerDeciliter
219220
220221 public init ? ( rawValue: RawValue ) {
221222 guard
@@ -235,20 +236,20 @@ extension LoopSettings: RawRepresentable {
235236 // Migrate the glucose range schedule override targets
236237 if let overrideRangesRawValue = glucoseRangeScheduleRawValue [ " overrideRanges " ] as? [ String : DoubleRange . RawValue ] {
237238 if let preMealTargetRawValue = overrideRangesRawValue [ " preMeal " ] {
238- self . preMealTargetRange = DoubleRange ( rawValue: preMealTargetRawValue)
239+ self . preMealTargetRange = DoubleRange ( rawValue: preMealTargetRawValue) ? . quantityRange ( for : LoopSettings . codingGlucoseUnit )
239240 }
240241 if let legacyWorkoutTargetRawValue = overrideRangesRawValue [ " workout " ] {
241- self . legacyWorkoutTargetRange = DoubleRange ( rawValue: legacyWorkoutTargetRawValue)
242+ self . legacyWorkoutTargetRange = DoubleRange ( rawValue: legacyWorkoutTargetRawValue) ? . quantityRange ( for : LoopSettings . codingGlucoseUnit )
242243 }
243244 }
244245 }
245246
246247 if let rawPreMealTargetRange = rawValue [ " preMealTargetRange " ] as? DoubleRange . RawValue {
247- self . preMealTargetRange = DoubleRange ( rawValue: rawPreMealTargetRange)
248+ self . preMealTargetRange = DoubleRange ( rawValue: rawPreMealTargetRange) ? . quantityRange ( for : LoopSettings . codingGlucoseUnit )
248249 }
249250
250251 if let rawLegacyWorkoutTargetRange = rawValue [ " legacyWorkoutTargetRange " ] as? DoubleRange . RawValue {
251- self . legacyWorkoutTargetRange = DoubleRange ( rawValue: rawLegacyWorkoutTargetRange)
252+ self . legacyWorkoutTargetRange = DoubleRange ( rawValue: rawLegacyWorkoutTargetRange) ? . quantityRange ( for : LoopSettings . codingGlucoseUnit )
252253 }
253254
254255 self . indefiniteWorkoutOverrideEnabledDate = rawValue [ " indefiniteWorkoutOverrideEnabledDate " ] as? Date
@@ -282,8 +283,8 @@ extension LoopSettings: RawRepresentable {
282283 ]
283284
284285 raw [ " glucoseTargetRangeSchedule " ] = glucoseTargetRangeSchedule? . rawValue
285- raw [ " preMealTargetRange " ] = preMealTargetRange? . rawValue
286- raw [ " legacyWorkoutTargetRange " ] = legacyWorkoutTargetRange? . rawValue
286+ raw [ " preMealTargetRange " ] = preMealTargetRange? . doubleRange ( for : LoopSettings . codingGlucoseUnit ) . rawValue
287+ raw [ " legacyWorkoutTargetRange " ] = legacyWorkoutTargetRange? . doubleRange ( for : LoopSettings . codingGlucoseUnit ) . rawValue
287288 raw [ " indefiniteWorkoutOverrideEnabledDate " ] = indefiniteWorkoutOverrideEnabledDate
288289 raw [ " preMealOverride " ] = preMealOverride? . rawValue
289290 raw [ " scheduleOverride " ] = scheduleOverride? . rawValue
0 commit comments