SettingsViewModel.swift 1.0 KB

1234567891011121314151617181920212223242526272829303132
  1. import SwiftUI
  2. extension Settings {
  3. class ViewModel<Provider>: BaseViewModel<Provider>, ObservableObject where Provider: SettingsProvider {
  4. @Injected() private var settingsManager: SettingsManager!
  5. @Injected() private var broadcaster: Broadcaster!
  6. @Published var closedLoop = false
  7. @Published var debugOptions = false
  8. override func subscribe() {
  9. closedLoop = settingsManager.settings.closedLoop
  10. debugOptions = settingsManager.settings.debugOptions ?? false
  11. $closedLoop
  12. .removeDuplicates()
  13. .sink { [weak self] value in
  14. self?.settingsManager.settings.closedLoop = value
  15. }.store(in: &lifetime)
  16. broadcaster.register(SettingsObserver.self, observer: self)
  17. }
  18. }
  19. }
  20. extension Settings.ViewModel: SettingsObserver {
  21. func settingsDidChange(_ settings: FreeAPSSettings) {
  22. closedLoop = settings.closedLoop
  23. debugOptions = settings.debugOptions ?? false
  24. }
  25. }