CorrectionRangeScheduleEditorViewModel.swift 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. //
  2. // CorrectionRangeScheduleEditorViewModel.swift
  3. // LoopKitUI
  4. //
  5. // Created by Nathaniel Hamming on 2021-03-19.
  6. // Copyright © 2021 LoopKit Authors. All rights reserved.
  7. //
  8. import Foundation
  9. import HealthKit
  10. import LoopKit
  11. struct CorrectionRangeScheduleEditorViewModel {
  12. let guardrail = Guardrail.correctionRange
  13. let glucoseTargetRangeSchedule: GlucoseRangeSchedule?
  14. let minValue: HKQuantity?
  15. var saveGlucoseTargetRangeSchedule: (_ glucoseTargetRangeSchedule: GlucoseRangeSchedule) -> Void
  16. init(
  17. mode: SettingsPresentationMode,
  18. therapySettingsViewModel: TherapySettingsViewModel,
  19. didSave: (() -> Void)? = nil
  20. ) {
  21. if mode == .acceptanceFlow {
  22. self.glucoseTargetRangeSchedule = therapySettingsViewModel.glucoseTargetRangeSchedule?.safeSchedule(with: therapySettingsViewModel.suspendThreshold?.quantity)
  23. }
  24. else {
  25. self.glucoseTargetRangeSchedule = therapySettingsViewModel.glucoseTargetRangeSchedule
  26. }
  27. self.minValue = Guardrail.minCorrectionRangeValue(suspendThreshold: therapySettingsViewModel.suspendThreshold)
  28. self.saveGlucoseTargetRangeSchedule = { [weak therapySettingsViewModel] glucoseTargetRangeSchedule in
  29. guard let therapySettingsViewModel = therapySettingsViewModel else {
  30. return
  31. }
  32. therapySettingsViewModel.saveCorrectionRange(range: glucoseTargetRangeSchedule)
  33. didSave?()
  34. }
  35. }
  36. }