CorrectionRangeOverridesEditorViewModel.swift 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. //
  2. // CorrectionRangeOverridesEditorViewModel.swift
  3. // LoopKitUI
  4. //
  5. // Created by Nathaniel Hamming on 2021-03-15.
  6. // Copyright © 2021 LoopKit Authors. All rights reserved.
  7. //
  8. import Foundation
  9. import HealthKit
  10. import LoopKit
  11. struct CorrectionRangeOverridesEditorViewModel {
  12. let correctionRangeOverrides: CorrectionRangeOverrides
  13. let suspendThreshold: GlucoseThreshold?
  14. let correctionRangeScheduleRange: ClosedRange<HKQuantity>
  15. let preset: CorrectionRangeOverrides.Preset
  16. let guardrail: Guardrail<HKQuantity>
  17. var saveCorrectionRangeOverride: (_ correctionRangeOverrides: CorrectionRangeOverrides) -> Void
  18. public init(therapySettingsViewModel: TherapySettingsViewModel,
  19. preset: CorrectionRangeOverrides.Preset,
  20. didSave: (() -> Void)? = nil)
  21. {
  22. self.correctionRangeOverrides = therapySettingsViewModel.correctionRangeOverrides
  23. self.suspendThreshold = therapySettingsViewModel.suspendThreshold
  24. self.correctionRangeScheduleRange = therapySettingsViewModel.correctionRangeScheduleRange
  25. self.guardrail = Guardrail.correctionRangeOverride(
  26. for: preset,
  27. correctionRangeScheduleRange: therapySettingsViewModel.correctionRangeScheduleRange,
  28. suspendThreshold: therapySettingsViewModel.suspendThreshold)
  29. self.preset = preset
  30. self.saveCorrectionRangeOverride = { [weak therapySettingsViewModel] correctionRangeOverrides in
  31. guard let therapySettingsViewModel = therapySettingsViewModel else {
  32. return
  33. }
  34. therapySettingsViewModel.saveCorrectionRangeOverride(preset: preset,
  35. correctionRangeOverrides: correctionRangeOverrides)
  36. didSave?()
  37. }
  38. }
  39. }