ISFEditorProvider.swift 1.8 KB

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