SettingsStateModel.swift 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import SwiftUI
  2. extension Settings {
  3. final class StateModel: BaseStateModel<Provider> {
  4. @Injected() private var broadcaster: Broadcaster!
  5. @Injected() private var fileManager: FileManager!
  6. @Published var closedLoop = false
  7. @Published var debugOptions = false
  8. @Published var animatedBackground = false
  9. private(set) var buildNumber = ""
  10. override func subscribe() {
  11. subscribeSetting(\.debugOptions, on: $debugOptions) { debugOptions = $0 }
  12. subscribeSetting(\.closedLoop, on: $closedLoop) { closedLoop = $0 }
  13. broadcaster.register(SettingsObserver.self, observer: self)
  14. buildNumber = Bundle.main.infoDictionary?["CFBundleVersion"] as? String ?? "Unknown"
  15. subscribeSetting(\.animatedBackground, on: $animatedBackground) { animatedBackground = $0 }
  16. }
  17. func logItems() -> [URL] {
  18. var items: [URL] = []
  19. if fileManager.fileExists(atPath: SimpleLogReporter.logFile) {
  20. items.append(URL(fileURLWithPath: SimpleLogReporter.logFile))
  21. }
  22. if fileManager.fileExists(atPath: SimpleLogReporter.logFilePrev) {
  23. items.append(URL(fileURLWithPath: SimpleLogReporter.logFilePrev))
  24. }
  25. return items
  26. }
  27. }
  28. }
  29. extension Settings.StateModel: SettingsObserver {
  30. func settingsDidChange(_ settings: FreeAPSSettings) {
  31. closedLoop = settings.closedLoop
  32. debugOptions = settings.debugOptions
  33. }
  34. }