Просмотр исходного кода

Revert "Fix Health integration (#142)"

This reverts commit d6186153d48762b783211ae410731cf37528e83d.
Jon B.M 4 лет назад
Родитель
Сommit
efc5136cba

+ 0 - 1
FreeAPS/Sources/APS/CGM/DexcomSource.swift

@@ -26,7 +26,6 @@ final class DexcomSource: GlucoseSource {
         }
         .timeout(60, scheduler: processQueue, options: nil, customError: nil)
         .replaceError(with: [])
-        .replaceEmpty(with: [])
         .eraseToAnyPublisher()
     }
 

+ 1 - 1
FreeAPS/Sources/APS/CGM/GlucoseSimulatorSource.swift

@@ -65,7 +65,7 @@ final class GlucoseSimulatorSource: GlucoseSource {
 
     func fetch() -> AnyPublisher<[BloodGlucose], Never> {
         guard canGenerateNewValues else {
-            return Just([]).eraseToAnyPublisher()
+            return Empty().eraseToAnyPublisher()
         }
 
         let glucoses = generator.getBloodGlucoses(

+ 0 - 1
FreeAPS/Sources/APS/CGM/LibreTransmitterSource.swift

@@ -39,7 +39,6 @@ final class BaseLibreTransmitterSource: LibreTransmitterSource, Injectable {
         }
         .timeout(60, scheduler: processQueue, options: nil, customError: nil)
         .replaceError(with: [])
-        .replaceEmpty(with: [])
         .eraseToAnyPublisher()
     }
 

+ 7 - 11
FreeAPS/Sources/APS/FetchGlucoseManager.swift

@@ -54,31 +54,27 @@ final class BaseFetchGlucoseManager: FetchGlucoseManager, Injectable {
     private func subscribe() {
         timer.publisher
             .receive(on: processQueue)
-            .flatMap { date -> AnyPublisher<(Date, Date, [BloodGlucose], [BloodGlucose]), Never> in
+            .flatMap { date -> AnyPublisher<(Date, Date, [BloodGlucose]), Never> in
                 debug(.nightscout, "FetchGlucoseManager heartbeat")
                 debug(.nightscout, "Start fetching glucose")
                 self.updateGlucoseSource()
-                return Publishers.CombineLatest4(
+                return Publishers.CombineLatest3(
                     Just(date),
                     Just(self.glucoseStorage.syncDate()),
-                    self.glucoseSource.fetch(),
-                    self.healthKitManager.fetch()
+                    self.glucoseSource.fetch()
                 )
                 .eraseToAnyPublisher()
             }
-            .sink { date, syncDate, glucose, glucoseFromHealth in
+            .sink { date, syncDate, glucose in
                 // Because of Spike dosn't respect a date query
-                let filteredByDate = (glucose + glucoseFromHealth).filter { $0.dateString > syncDate }
+                let filteredByDate = glucose.filter { $0.dateString > syncDate }
                 let filtered = self.glucoseStorage.filterTooFrequentGlucose(filteredByDate, at: syncDate)
-                if filtered.isNotEmpty {
+                if !filtered.isEmpty {
                     debug(.nightscout, "New glucose found")
                     self.glucoseStorage.storeGlucose(filtered)
                     self.apsManager.heartbeat(date: date, force: false)
                     self.nightscoutManager.uploadGlucose()
-                    let glucoseForHealth = filteredByDate.filter { !glucoseFromHealth.contains($0) }
-                    if glucoseForHealth.isNotEmpty {
-                        self.healthKitManager.save(bloodGlucoses: glucoseForHealth, completion: nil)
-                    }
+                    self.healthKitManager.save(bloodGlucoses: filtered, completion: nil)
                 }
             }
             .store(in: &lifetime)

+ 4 - 22
FreeAPS/Sources/Services/HealthKit/HealthKitManager.swift

@@ -98,9 +98,6 @@ final class BaseHealthKitManager: HealthKitManager, Injectable {
     }
 
     func save(bloodGlucoses: [BloodGlucose], completion: ((Result<Bool, Error>) -> Void)? = nil) {
-        guard settingsManager.settings.useAppleHealth,
-              bloodGlucoses.isNotEmpty else { return }
-
         for bgItem in bloodGlucoses {
             let bgQuantity = HKQuantity(
                 unit: .milligramsPerDeciliter,
@@ -148,21 +145,14 @@ final class BaseHealthKitManager: HealthKitManager, Injectable {
             }
 
             // loading only daily bg
-            let predicateByDate = HKQuery.predicateForSamples(
+            let predicate = HKQuery.predicateForSamples(
                 withStart: Date().addingTimeInterval(-1.days.timeInterval),
                 end: nil,
                 options: .strictStartDate
             )
-            // loading only not FreeAPS bg
-            let predicateByMeta = HKQuery.predicateForObjects(
-                withMetadataKey: "fromFreeAPSX",
-                operatorType: .notEqualTo,
-                value: 1
-            )
-            let compoundPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicateByDate, predicateByMeta])
 
-            healthKitStore.execute(getQueryForDeletedBloodGlucose(sampleType: bgType, predicate: predicateByDate))
-            healthKitStore.execute(getQueryForAddedBloodGlucose(sampleType: bgType, predicate: compoundPredicate))
+            healthKitStore.execute(getQueryForDeletedBloodGlucose(sampleType: bgType, predicate: predicate))
+            healthKitStore.execute(getQueryForAddedBloodGlucose(sampleType: bgType, predicate: predicate))
         }
         healthKitStore.execute(query)
     }
@@ -210,8 +200,7 @@ final class BaseHealthKitManager: HealthKitManager, Injectable {
                         removingBGID.append($0.uuid.uuidString)
                     }
                 }
-                glucoseStorage.removeGlucose(ids: removingBGID)
-                newGlucose = newGlucose.filter { !removingBGID.contains($0.id) }
+                glucoseStorage.removeGlucose(byIDCollection: removingBGID)
             }
         }
         return query
@@ -270,13 +259,6 @@ final class BaseHealthKitManager: HealthKitManager, Injectable {
         }
         return query
     }
-
-    func fetch() -> AnyPublisher<[BloodGlucose], Never> {
-        guard settingsManager.settings.useAppleHealth else { return Just([]).eraseToAnyPublisher() }
-        let actualGlucose = newGlucose.filter { $0.dateString <= Date() }
-        newGlucose = newGlucose.filter { !actualGlucose.contains($0) }
-        return Just(actualGlucose).eraseToAnyPublisher()
-    }
 }
 
 enum HealthKitPermissionRequestStatus {