Przeglądaj źródła

remote control as an option

Ivan Valkou 5 lat temu
rodzic
commit
a7c48d8ee5

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

@@ -1,4 +1,5 @@
 {
     "units": "mmol/L",
     "closedLoop": false
+    "allowAnnouncements": false
 }

+ 13 - 10
FreeAPS/Sources/APS/APSManager.swift

@@ -65,14 +65,18 @@ final class BaseAPSManager: APSManager, Injectable {
             return
         }
 
-        nightscout.fetchAnnouncements()
-            .sink { [weak self] in
-                if let recent = self?.announcementsStorage.recent(), recent.action != nil {
-                    self?.enactAnnouncement(recent)
-                } else {
-                    self?.loop()
-                }
-            }.store(in: &lifetime)
+        if settings.allowAnnouncements {
+            nightscout.fetchAnnouncements()
+                .sink { [weak self] in
+                    if let recent = self?.announcementsStorage.recent(), recent.action != nil {
+                        self?.enactAnnouncement(recent)
+                    } else {
+                        self?.loop()
+                    }
+                }.store(in: &lifetime)
+        } else {
+            loop()
+        }
     }
 
     private func loop() {
@@ -90,7 +94,7 @@ final class BaseAPSManager: APSManager, Injectable {
                         $0.suggestionDidUpdate(suggested)
                     }
                 }
-                self.nightscout.uploadStatus()
+                self.reportEnacted(suggestion: suggested, received: false)
             }
 
             if ok, self.settings.closedLoop {
@@ -275,7 +279,6 @@ final class BaseAPSManager: APSManager, Injectable {
         }
 
         guard verifyStatus() else {
-            reportEnacted(suggestion: suggested, received: false)
             return
         }
 

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

@@ -3,4 +3,5 @@ import Foundation
 struct FreeAPSSettings: JSON {
     var units: GlucoseUnits
     var closedLoop: Bool
+    var allowAnnouncements: Bool
 }

+ 9 - 0
FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorViewModel.swift

@@ -8,6 +8,8 @@ extension PreferencesEditor {
         @Injected() var settingsManager: SettingsManager!
         private(set) var preferences = Preferences()
         @Published var unitsIndex = 1
+        @Published var allowAnnouncements = false
+
         @Published var decimalFields: [Field<Decimal>] = []
         @Published var boolFields: [Field<Bool>] = []
         @Published var insulinCirveField = Field<InsulinCurve>(
@@ -19,6 +21,7 @@ extension PreferencesEditor {
         override func subscribe() {
             preferences = provider.preferences
             unitsIndex = settingsManager.settings.units == .mgdL ? 0 : 1
+            allowAnnouncements = settingsManager.settings.allowAnnouncements
             insulinCirveField.value = preferences.curve
             insulinCirveField.settable = self
 
@@ -28,6 +31,12 @@ extension PreferencesEditor {
                 }
                 .store(in: &lifetime)
 
+            $allowAnnouncements
+                .sink { [weak self] allow in
+                    self?.settingsManager.settings.allowAnnouncements = allow
+                }
+                .store(in: &lifetime)
+
             boolFields = [
                 Field(
                     displayName: "Rewind Resets Autosens",

+ 2 - 0
FreeAPS/Sources/Modules/PreferencesEditor/View/PreferencesEditorRootView.swift

@@ -17,6 +17,8 @@ extension PreferencesEditor {
                         Text("mg/dL").tag(0)
                         Text("mmol/L").tag(1)
                     }
+
+                    Toggle("Remote control", isOn: $viewModel.allowAnnouncements)
                 }
 
                 Section(header: Text("OpenAPS")) {

+ 1 - 1
FreeAPS/Sources/Services/SettingsManager/SettingsManager.swift

@@ -29,7 +29,7 @@ final class BaseSettingsManager: SettingsManager, Injectable {
         let storage = resolver.resolve(FileStorage.self)!
         settings = (try? storage.retrieve(OpenAPS.FreeAPS.settings, as: FreeAPSSettings.self))
             ?? FreeAPSSettings(from: OpenAPS.defaults(for: OpenAPS.FreeAPS.settings))
-            ?? FreeAPSSettings(units: .mmolL, closedLoop: false)
+            ?? FreeAPSSettings(units: .mmolL, closedLoop: false, allowAnnouncements: false)
 
         injectServices(resolver)
     }