ISFEditorProvider.swift 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import Foundation
  2. extension ISFEditor {
  3. final class Provider: BaseProvider, ISFEditorProvider {
  4. var profile: InsulinSensitivities {
  5. var retrievedSensitivities = storage.retrieve(OpenAPS.Settings.insulinSensitivities, as: InsulinSensitivities.self)
  6. ?? InsulinSensitivities(from: OpenAPS.defaults(for: OpenAPS.Settings.insulinSensitivities))
  7. ?? InsulinSensitivities(
  8. units: .mgdL,
  9. userPreferredUnits: .mgdL,
  10. sensitivities: []
  11. )
  12. // migrate existing mmol/L Trio users from mmol/L settings to pure mg/dl settings
  13. if retrievedSensitivities.units == .mmolL || retrievedSensitivities.userPreferredUnits == .mmolL {
  14. let convertedSensitivities = retrievedSensitivities.sensitivities.map { isf in
  15. InsulinSensitivityEntry(
  16. sensitivity: storage.parseSettingIfMmolL(value: isf.sensitivity),
  17. offset: isf.offset,
  18. start: isf.start
  19. )
  20. }
  21. retrievedSensitivities = InsulinSensitivities(
  22. units: .mgdL,
  23. userPreferredUnits: .mgdL,
  24. sensitivities: convertedSensitivities
  25. )
  26. saveProfile(retrievedSensitivities)
  27. }
  28. return retrievedSensitivities
  29. }
  30. func saveProfile(_ profile: InsulinSensitivities) {
  31. storage.save(profile, as: OpenAPS.Settings.insulinSensitivities)
  32. }
  33. var autosense: Autosens {
  34. storage.retrieve(OpenAPS.Settings.autosense, as: Autosens.self)
  35. ?? Autosens(from: OpenAPS.defaults(for: OpenAPS.Settings.autosense))
  36. ?? Autosens(ratio: 1, newisf: nil, timestamp: nil)
  37. }
  38. var autotune: Autotune? {
  39. storage.retrieve(OpenAPS.Settings.autotune, as: Autotune.self)
  40. }
  41. }
  42. }