CGMStateModel.swift 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import SwiftUI
  2. extension CGM {
  3. final class StateModel: BaseStateModel<Provider> {
  4. @Injected() var settingsManager: SettingsManager!
  5. @Injected() var libreSource: LibreTransmitterSource!
  6. @Published var cgm: CGMType = .nightscout
  7. @Published var transmitterID = ""
  8. @Published var uploadGlucose = false
  9. override func subscribe() {
  10. cgm = settingsManager.settings.cgm ?? .nightscout
  11. uploadGlucose = settingsManager.settings.uploadGlucose ?? false
  12. transmitterID = UserDefaults.standard.dexcomTransmitterID ?? ""
  13. $cgm
  14. .removeDuplicates()
  15. .sink { [weak self] value in
  16. guard let self = self else { return }
  17. self.settingsManager.settings.cgm = value
  18. }
  19. .store(in: &lifetime)
  20. $uploadGlucose
  21. .removeDuplicates()
  22. .sink { [weak self] value in
  23. self?.settingsManager.settings.uploadGlucose = value
  24. }
  25. .store(in: &lifetime)
  26. }
  27. func onChangeID() {
  28. UserDefaults.standard.dexcomTransmitterID = transmitterID
  29. }
  30. }
  31. }