SettingsViewModel.swift 872 B

12345678910111213141516171819202122232425262728
  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. override func subscribe() {
  8. closedLoop = settingsManager.settings.closedLoop
  9. $closedLoop
  10. .removeDuplicates()
  11. .sink { [weak self] value in
  12. self?.settingsManager.settings.closedLoop = value
  13. }.store(in: &lifetime)
  14. broadcaster.register(SettingsObserver.self, observer: self)
  15. }
  16. }
  17. }
  18. extension Settings.ViewModel: SettingsObserver {
  19. func settingsDidChange(_ settings: FreeAPSSettings) {
  20. closedLoop = settings.closedLoop
  21. }
  22. }