SettingsViewModel.swift 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  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. private(set) var buildNumber = ""
  9. override func subscribe() {
  10. closedLoop = settingsManager.settings.closedLoop
  11. debugOptions = settingsManager.settings.debugOptions ?? false
  12. $closedLoop
  13. .removeDuplicates()
  14. .sink { [weak self] value in
  15. self?.settingsManager.settings.closedLoop = value
  16. }.store(in: &lifetime)
  17. broadcaster.register(SettingsObserver.self, observer: self)
  18. buildNumber = Bundle.main.infoDictionary?["CFBundleVersion"] as? String ?? "Unknown"
  19. }
  20. }
  21. }
  22. extension Settings.ViewModel: SettingsObserver {
  23. func settingsDidChange(_ settings: FreeAPSSettings) {
  24. closedLoop = settings.closedLoop
  25. debugOptions = settings.debugOptions ?? false
  26. }
  27. }