HomeProvider.swift 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import Foundation
  2. import LoopKitUI
  3. import SwiftDate
  4. extension Home {
  5. final class Provider: BaseProvider, HomeProvider {
  6. @Injected() var apsManager: APSManager!
  7. @Injected() var glucoseStorage: GlucoseStorage!
  8. @Injected() var tempTargetsStorage: TempTargetsStorage!
  9. func pumpTimeZone() -> TimeZone? {
  10. apsManager.pumpManager?.status.timeZone
  11. }
  12. func heartbeatNow() {
  13. apsManager.heartbeat(date: Date())
  14. }
  15. func tempTargets(hours: Int) -> [TempTarget] {
  16. tempTargetsStorage.recent().filter {
  17. $0.createdAt.addingTimeInterval(hours.hours.timeInterval) > Date()
  18. }
  19. }
  20. func tempTarget() -> TempTarget? {
  21. tempTargetsStorage.current()
  22. }
  23. func pumpSettings() -> PumpSettings {
  24. storage.retrieve(OpenAPS.Settings.settings, as: PumpSettings.self)
  25. ?? PumpSettings(from: OpenAPS.defaults(for: OpenAPS.Settings.settings))
  26. ?? PumpSettings(insulinActionCurve: 10, maxBolus: 10, maxBasal: 2)
  27. }
  28. func pumpReservoir() -> Decimal? {
  29. storage.retrieve(OpenAPS.Monitor.reservoir, as: Decimal.self)
  30. }
  31. func autotunedBasalProfile() -> [BasalProfileEntry] {
  32. storage.retrieve(OpenAPS.Settings.profile, as: Autotune.self)?.basalProfile
  33. ?? storage.retrieve(OpenAPS.Settings.pumpProfile, as: Autotune.self)?.basalProfile
  34. ?? [BasalProfileEntry(start: "00:00", minutes: 0, rate: 1)]
  35. }
  36. func basalProfile() -> [BasalProfileEntry] {
  37. storage.retrieve(OpenAPS.Settings.pumpProfile, as: Autotune.self)?.basalProfile
  38. ?? [BasalProfileEntry(start: "00:00", minutes: 0, rate: 1)]
  39. }
  40. func getBGTargets() -> BGTargets {
  41. storage.retrieve(OpenAPS.Settings.bgTargets, as: BGTargets.self)
  42. ?? BGTargets(from: OpenAPS.defaults(for: OpenAPS.Settings.bgTargets))
  43. ?? BGTargets(units: .mgdL, userPreferredUnits: .mgdL, targets: [])
  44. }
  45. }
  46. }