Storage.swift 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. //
  2. // Storage.swift
  3. // LoopFollow
  4. //
  5. // Created by Jonas Björkert on 2024-08-25.
  6. // Copyright © 2024 Jon Fawcett. All rights reserved.
  7. //
  8. import Foundation
  9. import HealthKit
  10. /*
  11. Observable persistant storage
  12. */
  13. class Storage {
  14. var remoteType = StorageValue<RemoteType>(key: "remoteType", defaultValue: .nightscout)
  15. var deviceToken = StorageValue<String>(key: "deviceToken", defaultValue: "")
  16. var expirationDate = StorageValue<Date?>(key: "expirationDate", defaultValue: nil)
  17. var sharedSecret = StorageValue<String>(key: "sharedSecret", defaultValue: "")
  18. var productionEnvironment = StorageValue<Bool>(key: "productionEnvironment", defaultValue: true)
  19. var apnsKey = StorageValue<String>(key: "apnsKey", defaultValue: "")
  20. var teamId = StorageValue<String?>(key: "teamId", defaultValue: nil)
  21. var keyId = StorageValue<String>(key: "keyId", defaultValue: "")
  22. var bundleId = StorageValue<String>(key: "bundleId", defaultValue: "")
  23. var user = StorageValue<String>(key: "user", defaultValue: "")
  24. var maxBolus = SecureStorageValue<HKQuantity>(key: "maxBolus", defaultValue: HKQuantity(unit: .internationalUnit(), doubleValue: 1.0))
  25. var maxCarbs = SecureStorageValue<HKQuantity>(key: "maxCarbs", defaultValue: HKQuantity(unit: .gram(), doubleValue: 30.0))
  26. var maxProtein = SecureStorageValue<HKQuantity>(key: "maxProtein", defaultValue: HKQuantity(unit: .gram(), doubleValue: 30.0))
  27. var maxFat = SecureStorageValue<HKQuantity>(key: "maxFat", defaultValue: HKQuantity(unit: .gram(), doubleValue: 30.0))
  28. var mealWithBolus = StorageValue<Bool>(key: "mealWithBolus", defaultValue: false)
  29. var mealWithFatProtein = StorageValue<Bool>(key: "mealWithFatProtein", defaultValue: false)
  30. var cachedJWT = StorageValue<String?>(key: "cachedJWT", defaultValue: nil)
  31. var jwtExpirationDate = StorageValue<Date?>(key: "jwtExpirationDate", defaultValue: nil)
  32. var backgroundRefreshType = StorageValue<BackgroundRefreshType>(key: "backgroundRefreshType", defaultValue: .silentTune)
  33. var selectedBLEDevice = StorageValue<BLEDevice?>(key: "selectedBLEDevice", defaultValue: nil)
  34. var debugLogLevel = StorageValue<Bool>(key: "debugLogLevel", defaultValue: false)
  35. var contactTrend = StorageValue<ContactIncludeOption>(key: "contactTrend", defaultValue: .off)
  36. var contactDelta = StorageValue<ContactIncludeOption>(key: "contactDelta", defaultValue: .off)
  37. var contactEnabled = StorageValue<Bool>(key: "contactEnabled", defaultValue: false)
  38. var contactBackgroundColor = StorageValue<String>(key: "contactBackgroundColor", defaultValue: ContactColorOption.black.rawValue)
  39. var contactTextColor = StorageValue<String>(key: "contactTextColor", defaultValue: ContactColorOption.white.rawValue)
  40. var sensorScheduleOffset = StorageValue<Double?>(key: "sensorScheduleOffset", defaultValue: nil)
  41. var alarms = StorageValue<[Alarm]>(key: "alarms", defaultValue: [])
  42. var alarmConfiguration = StorageValue<AlarmConfiguration>(key: "alarmConfiguration", defaultValue: .default)
  43. var lastOverrideStartNotified = StorageValue<TimeInterval?>(key: "lastOverrideStartNotified", defaultValue: nil)
  44. var lastOverrideEndNotified = StorageValue<TimeInterval?>(key: "lastOverrideEndNotified", defaultValue: nil)
  45. var lastTempTargetStartNotified = StorageValue<TimeInterval?>(key: "lastTempTargetStartNotified", defaultValue: nil)
  46. var lastTempTargetEndNotified = StorageValue<TimeInterval?>(key: "lastTempTargetEndNotified", defaultValue: nil)
  47. var lastRecBolusNotified = StorageValue<Double?>(key: "lastRecBolusNotified", defaultValue: nil)
  48. static let shared = Storage()
  49. private init() {}
  50. }