AutotuneConfigViewModel.swift 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import SwiftUI
  2. extension AutotuneConfig {
  3. class ViewModel<Provider>: BaseViewModel<Provider>, ObservableObject where Provider: AutotuneConfigProvider {
  4. @Injected() var settingsManager: SettingsManager!
  5. @Published var useAutotune = false
  6. @Published var autotune: Autotune?
  7. private(set) var units: GlucoseUnits = .mmolL
  8. override func subscribe() {
  9. autotune = provider.autotune
  10. units = settingsManager.settings.units
  11. useAutotune = settingsManager.settings.useAutotune
  12. $useAutotune
  13. .removeDuplicates()
  14. .sink { [weak self] use in
  15. self?.settingsManager.settings.useAutotune = use
  16. }
  17. .store(in: &lifetime)
  18. }
  19. func run() {
  20. provider.runAutotune()
  21. .receive(on: DispatchQueue.main)
  22. .sink { [weak self] result in
  23. self?.autotune = result
  24. }.store(in: &lifetime)
  25. }
  26. func delete() {
  27. provider.deleteAutotune()
  28. autotune = nil
  29. }
  30. }
  31. }