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

Replace upload calls in FetchGlucoseManager with Combine subscriptions in Remote Service Managers

polscm32 1 год назад
Родитель
Сommit
0c1fc57a3f

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

@@ -263,17 +263,6 @@ final class BaseFetchGlucoseManager: FetchGlucoseManager, Injectable {
 
 
         deviceDataManager.heartbeat(date: Date())
         deviceDataManager.heartbeat(date: Date())
 
 
-        // Upload to NS/Health/Tidepool
-        Task.detached {
-            async let uploadToNS: () = self.nightscoutManager.uploadGlucose()
-            async let uploadToHealth: () = self.healthKitManager.uploadGlucose()
-            async let uploadToTidepool: () = self.tidepoolService.uploadGlucose()
-
-            await uploadToNS
-            await uploadToHealth
-            await uploadToTidepool
-        }
-
         // End of the Background tasks
         // End of the Background tasks
         if let backgroundTask = backGroundFetchBGTaskID {
         if let backgroundTask = backGroundFetchBGTaskID {
             UIApplication.shared.endBackgroundTask(backgroundTask)
             UIApplication.shared.endBackgroundTask(backgroundTask)

+ 10 - 0
FreeAPS/Sources/Services/HealthKit/HealthKitManager.swift

@@ -72,6 +72,16 @@ final class BaseHealthKitManager: HealthKitManager, Injectable {
                 .share()
                 .share()
                 .eraseToAnyPublisher()
                 .eraseToAnyPublisher()
 
 
+        glucoseStorage.updatePublisher
+            .receive(on: DispatchQueue.global(qos: .background))
+            .sink { [weak self] _ in
+                guard let self = self else { return }
+                Task {
+                    await self.uploadGlucose()
+                }
+            }
+            .store(in: &subscriptions)
+
         registerHandlers()
         registerHandlers()
 
 
         guard isAvailableOnCurrentDevice,
         guard isAvailableOnCurrentDevice,

+ 10 - 0
FreeAPS/Sources/Services/Network/NightscoutManager.swift

@@ -85,6 +85,16 @@ final class BaseNightscoutManager: NightscoutManager, Injectable {
                 .share()
                 .share()
                 .eraseToAnyPublisher()
                 .eraseToAnyPublisher()
 
 
+        glucoseStorage.updatePublisher
+            .receive(on: DispatchQueue.global(qos: .background))
+            .sink { [weak self] _ in
+                guard let self = self else { return }
+                Task {
+                    await self.uploadGlucose()
+                }
+            }
+            .store(in: &subscriptions)
+
         registerHandlers()
         registerHandlers()
         setupNotification()
         setupNotification()
     }
     }

+ 10 - 0
FreeAPS/Sources/Services/Network/TidepoolManager.swift

@@ -55,6 +55,16 @@ final class BaseTidepoolManager: TidepoolManager, Injectable {
                 .share()
                 .share()
                 .eraseToAnyPublisher()
                 .eraseToAnyPublisher()
 
 
+        glucoseStorage.updatePublisher
+            .receive(on: DispatchQueue.global(qos: .background))
+            .sink { [weak self] _ in
+                guard let self = self else { return }
+                Task {
+                    await self.uploadGlucose()
+                }
+            }
+            .store(in: &subscriptions)
+
         registerHandlers()
         registerHandlers()
 
 
         subscribe()
         subscribe()