Observable.swift 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. // LoopFollow
  2. // Observable.swift
  3. import Foundation
  4. import HealthKit
  5. import SwiftUI
  6. /*
  7. Observable in memory storage
  8. */
  9. class Observable {
  10. static let shared = Observable()
  11. var tempTarget = ObservableValue<HKQuantity?>(default: nil)
  12. var override = ObservableValue<String?>(default: nil)
  13. /// End of the active override as Unix epoch seconds; nil = no override or indefinite.
  14. var overrideEndAt = ObservableValue<TimeInterval?>(default: nil)
  15. /// End of the active temp target as Unix epoch seconds; nil = no active temp target.
  16. var tempTargetEndAt = ObservableValue<TimeInterval?>(default: nil)
  17. var minAgoText = ObservableValue<String>(default: String(localized: "?? min ago"))
  18. var bgText = ObservableValue<String>(default: "BG")
  19. var bg = ObservableValue<Int?>(default: nil)
  20. var bgStale = ObservableValue<Bool>(default: true)
  21. var bgTextColor = ObservableValue<Color>(default: .primary)
  22. var directionText = ObservableValue<String>(default: "-")
  23. var deltaText = ObservableValue<String>(default: "+0")
  24. var iobText = ObservableValue<String>(default: "--")
  25. var serverText = ObservableValue<String>(default: "Server")
  26. var loopStatusText = ObservableValue<String>(default: "")
  27. var loopStatusColor = ObservableValue<Color>(default: .primary)
  28. var predictionText = ObservableValue<String>(default: "")
  29. var predictionColor = ObservableValue<Color>(default: .purple)
  30. var currentAlarm = ObservableValue<UUID?>(default: nil)
  31. var alarmSoundPlaying = ObservableValue<Bool>(default: false)
  32. var debug = ObservableValue<Bool>(default: false)
  33. var chartSettingsChanged = ObservableValue<Bool>(default: false)
  34. var alertLastLoopTime = ObservableValue<TimeInterval?>(default: nil)
  35. var previousAlertLastLoopTime = ObservableValue<TimeInterval?>(default: nil)
  36. var deviceRecBolus = ObservableValue<Double?>(default: nil)
  37. var deviceBatteryLevel = ObservableValue<Double?>(default: nil)
  38. var deviceBatteryIsCharging = ObservableValue<Bool?>(default: nil)
  39. var pumpBatteryLevel = ObservableValue<Double?>(default: nil)
  40. var dbSizePercentage = ObservableValue<Double?>(default: nil)
  41. var enactedOrSuggested = ObservableValue<TimeInterval?>(default: nil)
  42. var lastSentTOTP = ObservableValue<String?>(default: nil)
  43. var loopFollowDeviceToken = ObservableValue<String>(default: "")
  44. var isNotLooping = ObservableValue<Bool>(default: false)
  45. /// Selected tab index used by SwiftUI TabView — set from MainViewController to switch tabs
  46. var selectedTabIndex = ObservableValue<Int>(default: 0)
  47. /// Currently visible app-wide banner (nil = hidden). Managed by BannerManager.
  48. var activeBanner = ObservableValue<BannerMessage?>(default: nil)
  49. /// True while the onboarding cover is on screen; AlarmManager doesn't act
  50. /// on alarms while set. In-memory, so background launches are unaffected.
  51. var isOnboardingActive = ObservableValue<Bool>(default: false)
  52. private init() {}
  53. }