SettingsViewModel.swift 1.3 KB

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