SettingsManager.swift 787 B

12345678910111213141516171819202122232425262728
  1. import Foundation
  2. import Swinject
  3. protocol SettingsManager {
  4. var settings: FreeAPSSettings { get set }
  5. }
  6. final class BaseFSettingsManager: SettingsManager, Injectable {
  7. var settings: FreeAPSSettings {
  8. didSet { save() }
  9. }
  10. @Injected() var storage: FileStorage!
  11. init(resolver: Resolver) {
  12. let storage = resolver.resolve(FileStorage.self)!
  13. settings = (try? storage.retrieve(OpenAPS.Settings.freeAPSSettings, as: FreeAPSSettings.self))
  14. ?? FreeAPSSettings(from: OpenAPS.defaults(for: OpenAPS.Settings.freeAPSSettings))
  15. ?? FreeAPSSettings(units: .mmolL, closedLoop: false)
  16. injectServices(resolver)
  17. }
  18. private func save() {
  19. try? storage.save(settings, as: OpenAPS.Settings.freeAPSSettings)
  20. }
  21. }