Sfoglia il codice sorgente

Fixes for HealthKit settings

Ivan Valkou 4 anni fa
parent
commit
3683e26a28

+ 2 - 1
FreeAPS/Resources/json/defaults/freeaps/freeaps_settings.json

@@ -17,5 +17,6 @@
     "addSourceInfoToGlucoseNotifications": false,
     "lowGlucose": 72,
     "highGlucose": 270,
-    "carbsRequiredThreshold": 10
+    "carbsRequiredThreshold": 10,
+    "useAppleHealth": false
 }

+ 0 - 10
FreeAPS/Sources/Models/FreeAPSSettings.swift

@@ -14,10 +14,7 @@ struct FreeAPSSettings: JSON, Equatable {
     var cgm: CGMType = .nightscout
     var uploadGlucose: Bool = false
     var useCalendar: Bool = false
-    // Apple Health Integration
     var useAppleHealth: Bool = false
-    var needShowInformationTextForSetPermissions: Bool = false
-    // ---
     var glucoseBadge: Bool = false
     var glucoseNotificationsAlways: Bool = false
     var useAlarmSound: Bool = false
@@ -89,13 +86,6 @@ extension FreeAPSSettings: Decodable {
             settings.useAppleHealth = useAppleHealth
         }
 
-        if let needShowInformationTextForSetPermissions = try? container.decode(
-            Bool.self,
-            forKey: .needShowInformationTextForSetPermissions
-        ) {
-            settings.needShowInformationTextForSetPermissions = needShowInformationTextForSetPermissions
-        }
-
         if let glucoseBadge = try? container.decode(Bool.self, forKey: .glucoseBadge) {
             settings.glucoseBadge = glucoseBadge
         }

+ 16 - 22
FreeAPS/Sources/Modules/HealthKit/HealthKitStateModel.swift

@@ -10,35 +10,29 @@ extension AppleHealthKit {
 
         override func subscribe() {
             useAppleHealth = settingsManager.settings.useAppleHealth
-            needShowInformationTextForSetPermissions = settingsManager.settings.needShowInformationTextForSetPermissions
 
-            subscribeSetting(\.needShowInformationTextForSetPermissions, on: $needShowInformationTextForSetPermissions) { _ in }
+            subscribeSetting(\.useAppleHealth, on: $useAppleHealth) {
+                useAppleHealth = $0
+            } didSet: { [weak self] value in
+                guard let self = self else { return }
 
-            $useAppleHealth
-                .removeDuplicates()
-                .sink { [weak self] value in
-                    guard let self = self else { return }
-                    guard value else {
-                        self.settingsManager.settings.useAppleHealth = false
-                        self.needShowInformationTextForSetPermissions = false
+                guard value else {
+                    self.needShowInformationTextForSetPermissions = false
+                    return
+                }
+
+                self.healthKitManager.requestPermission { status, error in
+                    guard error == nil else {
                         return
                     }
 
-                    self.healthKitManager.requestPermission { status, error in
-                        guard error == nil else {
-                            return
-                        }
-                        self.settingsManager.settings.useAppleHealth = status
-                        self.healthKitManager.enableBackgroundDelivery()
-                        self.healthKitManager.createObserver()
-                        DispatchQueue.main.async {
-                            if !self.healthKitManager.areAllowAllPermissions {
-                                self.needShowInformationTextForSetPermissions = true
-                            }
-                        }
+                    self.healthKitManager.enableBackgroundDelivery()
+                    self.healthKitManager.createObserver()
+                    DispatchQueue.main.async {
+                        self.needShowInformationTextForSetPermissions = !self.healthKitManager.areAllowAllPermissions
                     }
                 }
-                .store(in: &lifetime)
+            }
         }
     }
 }