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

Synchronise upload readings toggle in dexcom settings with FAX settings (#608)

* Allow to delete Carbs when connexion with NS is impossible - Alert the user of the issue.

* synchronise upload readings toggle in dexcom settings with FAX settings
Pierre L 3 лет назад
Родитель
Сommit
2295be681f

+ 11 - 3
FreeAPS/Sources/APS/CGM/DexcomSourceG5.swift

@@ -23,8 +23,9 @@ final class DexcomSourceG5: GlucoseSource {
         cgmManager = G5CGMManager
             .init(state: TransmitterManagerState(
                 transmitterID: UserDefaults.standard
-                    .dexcomTransmitterID ?? "000000"
-            )) as? CGMManagerUI
+                    .dexcomTransmitterID ?? "000000",
+                shouldSyncToRemoteService: glucoseManager.settingsManager.settings.uploadGlucose
+            ))
         cgmManager?.cgmManagerDelegate = self
     }
 
@@ -113,7 +114,14 @@ extension DexcomSourceG5: CGMManagerDelegate {
         //  return glucoseStore.latestGlucose?.startDate
     }
 
-    func cgmManagerDidUpdateState(_: CGMManager) {}
+    func cgmManagerDidUpdateState(_ manager: CGMManager) {
+        dispatchPrecondition(condition: .onQueue(processQueue))
+        guard let g5Manager = manager as? TransmitterManager else {
+            return
+        }
+        glucoseManager?.settingsManager.settings.uploadGlucose = g5Manager.shouldSyncToRemoteService
+        UserDefaults.standard.dexcomTransmitterID = g5Manager.rawState["transmitterID"] as? String
+    }
 
     func credentialStoragePrefix(for _: CGMManager) -> String {
         // return string unique to this instance of the CGMManager

+ 3 - 1
FreeAPS/Sources/APS/CGM/DexcomSourceG6.swift

@@ -23,7 +23,8 @@ final class DexcomSourceG6: GlucoseSource {
         cgmManager = G6CGMManager
             .init(state: TransmitterManagerState(
                 transmitterID: UserDefaults.standard
-                    .dexcomTransmitterID ?? "000000"
+                    .dexcomTransmitterID ?? "000000",
+                shouldSyncToRemoteService: glucoseManager.settingsManager.settings.uploadGlucose
             ))
         cgmManager?.delegateQueue = processQueue
         cgmManager?.cgmManagerDelegate = self
@@ -119,6 +120,7 @@ extension DexcomSourceG6: CGMManagerDelegate {
         guard let g6Manager = manager as? TransmitterManager else {
             return
         }
+        glucoseManager?.settingsManager.settings.uploadGlucose = g6Manager.shouldSyncToRemoteService
         UserDefaults.standard.dexcomTransmitterID = g6Manager.rawState["transmitterID"] as? String
     }
 

+ 10 - 1
FreeAPS/Sources/APS/CGM/dexcomSourceG7.swift

@@ -22,6 +22,11 @@ final class DexcomSourceG7: GlucoseSource {
         cgmManager = G7CGMManager()
         cgmManager?.cgmManagerDelegate = self
         cgmManager?.delegateQueue = processQueue
+
+        // initial value of upload Readings
+        if let cgmManagerG7 = cgmManager as? G7CGMManager {
+            cgmManagerG7.uploadReadings = glucoseManager.settingsManager.settings.uploadGlucose
+        }
     }
 
     func fetch(_: DispatchTimer?) -> AnyPublisher<[BloodGlucose], Never> {
@@ -103,7 +108,11 @@ extension DexcomSourceG7: CGMManagerDelegate {
         return glucoseStorage.lastGlucoseDate()
     }
 
-    func cgmManagerDidUpdateState(_: CGMManager) {}
+    func cgmManagerDidUpdateState(_ cgmManager: CGMManager) {
+        if let cgmManagerG7 = cgmManager as? G7CGMManager {
+            glucoseManager?.settingsManager.settings.uploadGlucose = cgmManagerG7.uploadReadings
+        }
+    }
 
     func credentialStoragePrefix(for _: CGMManager) -> String {
         // return string unique to this instance of the CGMManager

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

@@ -10,6 +10,7 @@ protocol FetchGlucoseManager: SourceInfoProvider {
     func updateGlucoseSource()
     var glucoseSource: GlucoseSource! { get }
     var cgmGlucoseSourceType: CGMType? { get set }
+    var settingsManager: SettingsManager! { get }
 }
 
 final class BaseFetchGlucoseManager: FetchGlucoseManager, Injectable {

+ 15 - 1
FreeAPS/Sources/Modules/CGM/CGMStateModel.swift

@@ -1,5 +1,6 @@
 import CGMBLEKit
 import Combine
+import G7SensorKit
 import LoopKitUI
 import SwiftUI
 
@@ -26,7 +27,17 @@ extension CGM {
             cgmTransmitterDeviceAddress = UserDefaults.standard.cgmTransmitterDeviceAddress
 
             subscribeSetting(\.useCalendar, on: $createCalendarEvents) { createCalendarEvents = $0 }
-            subscribeSetting(\.uploadGlucose, on: $uploadGlucose) { uploadGlucose = $0 }
+            subscribeSetting(\.uploadGlucose, on: $uploadGlucose, initial: { uploadGlucose = $0 }, didSet: { val in
+                if let cgmManagerG5 = self.cgmManager.glucoseSource.cgmManager as? G5CGMManager {
+                    cgmManagerG5.shouldSyncToRemoteService = val
+                }
+                if let cgmManagerG6 = self.cgmManager.glucoseSource.cgmManager as? G6CGMManager {
+                    cgmManagerG6.shouldSyncToRemoteService = val
+                }
+                if let cgmManagerG7 = self.cgmManager.glucoseSource.cgmManager as? G7CGMManager {
+                    cgmManagerG7.uploadReadings = val
+                }
+            })
 
             $cgm
                 .removeDuplicates()
@@ -75,6 +86,9 @@ extension CGM.StateModel: CompletionDelegate {
         if cgmManager.cgmGlucoseSourceType == nil {
             cgm = .nightscout
         }
+        // refresh the upload options
+        uploadGlucose = settingsManager.settings.uploadGlucose
+
         cgmManager.updateGlucoseSource()
     }
 }