HomeProvider.swift 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. // User-initiated force-loop: bypass dwell suppression so transient
  14. // errors surface immediately rather than waiting for count/dwell.
  15. apsManager.markNextLoopUserInitiated()
  16. apsManager.heartbeat(date: Date())
  17. }
  18. func pumpSettings() async -> PumpSettings {
  19. await storage.retrieveAsync(OpenAPS.Settings.settings, as: PumpSettings.self)
  20. ?? PumpSettings(from: OpenAPS.defaults(for: OpenAPS.Settings.settings))
  21. ?? PumpSettings(insulinActionCurve: 10, maxBolus: 10, maxBasal: 2)
  22. }
  23. func pumpReservoir() async -> Decimal? {
  24. await storage.retrieveAsync(OpenAPS.Monitor.reservoir, as: Decimal.self)
  25. }
  26. func getBasalProfile() async -> [BasalProfileEntry] {
  27. await storage.retrieveAsync(OpenAPS.Settings.basalProfile, as: [BasalProfileEntry].self)
  28. ?? [BasalProfileEntry](from: OpenAPS.defaults(for: OpenAPS.Settings.basalProfile))
  29. ?? []
  30. }
  31. func getBGTargets() async -> BGTargets {
  32. await storage.retrieveAsync(OpenAPS.Settings.bgTargets, as: BGTargets.self)
  33. ?? BGTargets(from: OpenAPS.defaults(for: OpenAPS.Settings.bgTargets))
  34. ?? BGTargets(units: .mgdL, userPreferredUnits: .mgdL, targets: [])
  35. }
  36. }
  37. }