ShortcutsConfigStateModel.swift 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. //
  2. // ShortcutsConfigStateModel.swift
  3. // FreeAPS
  4. //
  5. // Created by Pierre LAGARDE on 01/05/2024.
  6. //
  7. import SwiftUI
  8. extension ShortcutsConfig {
  9. final class StateModel: BaseStateModel<Provider> {
  10. @Published var allowBolusByShortcuts: Bool = false
  11. @Published var maxBolusByShortcuts: BolusShortcutLimit = .noAllowed
  12. override func subscribe() {
  13. // allowBolusByShortcuts = (maxBolusByShortcuts != .noAllowed)
  14. subscribeSetting(\.bolusShortcut, on: $maxBolusByShortcuts) {
  15. maxBolusByShortcuts = ($0 == .noAllowed) ? .limitBolusMax : $0
  16. allowBolusByShortcuts = ($0 != .noAllowed)
  17. }
  18. $allowBolusByShortcuts.receive(on: DispatchQueue.main)
  19. .sink { [weak self] value in
  20. if !value {
  21. // the bolus is not allowed
  22. self?.settingsManager.settings.bolusShortcut = .noAllowed
  23. } else {
  24. //
  25. if let bs = self?.maxBolusByShortcuts {
  26. self?.settingsManager.settings.bolusShortcut = bs
  27. } else {
  28. self?.settingsManager.settings.bolusShortcut = .limitBolusMax
  29. }
  30. }
  31. }
  32. .store(in: &lifetime)
  33. }
  34. }
  35. }