HealthKitStateModel.swift 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import Combine
  2. import SwiftUI
  3. extension AppleHealthKit {
  4. final class StateModel: BaseStateModel<Provider> {
  5. @Injected() var healthKitManager: HealthKitManager!
  6. @Published var useAppleHealth = false
  7. @Published var needShowInformationTextForSetPermissions = false
  8. override func subscribe() {
  9. useAppleHealth = settingsManager.settings.useAppleHealth
  10. subscribeSetting(\.useAppleHealth, on: $useAppleHealth) {
  11. useAppleHealth = $0
  12. } didSet: { [weak self] value in
  13. guard let self = self else { return }
  14. guard value else {
  15. self.needShowInformationTextForSetPermissions = false
  16. return
  17. }
  18. self.healthKitManager.requestPermission { status, error in
  19. guard error == nil else {
  20. return
  21. }
  22. self.healthKitManager.enableBackgroundDelivery()
  23. self.healthKitManager.createObserver()
  24. DispatchQueue.main.async {
  25. self.needShowInformationTextForSetPermissions = !self.healthKitManager.areAllowAllPermissions
  26. }
  27. }
  28. }
  29. }
  30. }
  31. }