Przeglądaj źródła

Add: Show/hide NS settings. Fix Min Ago Calendar. Cleanup Watch/Carplay Instructions

Jon Fawcett 6 lat temu
rodzic
commit
2f33f0e2f6

+ 3 - 0
LoopFollow/Controllers/NightScout.swift

@@ -105,6 +105,9 @@ extension MainViewController {
                 self.checkAlarms(bgs: bgData)
             }
             
+            // Used for Min Ago watch readings
+            writeCalendar()
+            
             if UserDefaultsRepository.url.value != ""  {
                 if latestLoopTime == 0 {
                     webLoadNSDeviceStatus()

+ 33 - 0
LoopFollow/ViewControllers/GraphSettingsViewController.swift

@@ -22,8 +22,41 @@ class GraphSettingsViewController: FormViewController {
       }
  
       buildGraphSettings()
+    
+        showHideNSDetails()
    }
    
+    func showHideNSDetails() {
+        var isHidden = false
+        var isEnabled = true
+        if UserDefaultsRepository.url.value == "" {
+            isHidden = true
+            isEnabled = false
+        }
+        
+        if let row1 = form.rowBy(tag: "predictionToLoad") as? StepperRow {
+            row1.hidden = .function(["hide"],  {form in
+                return isHidden
+            })
+            row1.evaluateHidden()
+        }
+        
+        if let row2 = form.rowBy(tag: "offsetCarbsBolus") as? SwitchRow {
+            row2.hidden = .function(["hide"],  {form in
+                return isHidden
+            })
+            row2.evaluateHidden()
+        }
+        
+        if let row3 = form.rowBy(tag: "overrideDisplayLocation") as? StepperRow {
+            row3.hidden = .function(["hide"],  {form in
+                return isHidden
+            })
+            row3.evaluateHidden()
+        }
+        
+    }
+    
     private func buildGraphSettings() {
         form
             +++ Section("Graph Settings")

+ 9 - 6
LoopFollow/ViewControllers/MainViewController.swift

@@ -465,10 +465,12 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
             
             if UserDefaultsRepository.calendarIdentifier.value == "" { return }
                 
-            if self.lastCalDate == self.bgData[self.bgData.count - 1].date && self.calTimer.isValid {
-//                    if UserDefaultsRepository.debugLog.value { self.writeDebugLog(value: "Calendar - Not saving same entry") }
-                    return }
-                
+            // This lets us fire the method to write Min Ago entries only once a minute starting after 6 minutes but allows new readings through
+            if self.lastCalDate == self.bgData[self.bgData.count - 1].date
+                && (self.calTimer.isValid || (dateTimeUtils.getNowTimeIntervalUTC() - self.lastCalDate) < 360) {
+                return
+            }
+
                 // Create Event info
                 let deltaBG = self.bgData[self.bgData.count - 1].sgv -  self.bgData[self.bgData.count - 2].sgv as Int
                 let deltaTime = (TimeInterval(Date().timeIntervalSince1970) - self.bgData[self.bgData.count - 1].date) / 60
@@ -549,9 +551,10 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
                 event.calendar = self.store.calendar(withIdentifier: UserDefaultsRepository.calendarIdentifier.value)
                 do {
                     try self.store.save(event, span: .thisEvent, commit: true)
-                    self.lastCalDate = self.bgData[self.bgData.count - 1].date
                     self.calTimer.invalidate()
-                    self.startCalTimer(time: (60 * 5))
+                    self.startCalTimer(time: (60 * 1))
+                    
+                    self.lastCalDate = self.bgData[self.bgData.count - 1].date
                     //if UserDefaultsRepository.debugLog.value { self.writeDebugLog(value: "Calendar Write: " + eventTitle) }
                     //UserDefaultsRepository.savedEventID.value = event.eventIdentifier //save event id to access this particular event later
                 } catch {

+ 33 - 5
LoopFollow/ViewControllers/SettingsViewController.swift

@@ -14,12 +14,34 @@ import EventKitUI
 class SettingsViewController: FormViewController {
 
    var appStateController: AppStateController?
+    
+    func showHideNSDetails() {
+        var isHidden = false
+        var isEnabled = true
+        if UserDefaultsRepository.url.value == "" {
+            isHidden = true
+            isEnabled = false
+        }
+        
+        if let row1 = form.rowBy(tag: "informationDisplaySettings") as? ButtonRow {
+            row1.hidden = .function(["hide"],  {form in
+                return isHidden
+            })
+            row1.evaluateHidden()
+        }
+        
+        guard let nightscoutTab = self.tabBarController?.tabBar.items![3] else { return }
+        nightscoutTab.isEnabled = isEnabled
+        
+    }
    
    override func viewDidLoad() {
         super.viewDidLoad()
         if UserDefaultsRepository.forceDarkMode.value {
             overrideUserInterfaceStyle = .dark
         }
+    
+        
                         
         form
         +++ Section(header: "Nightscout Settings", footer: "Changing Nightscout settings requires an app restart.")
@@ -32,6 +54,7 @@ class SettingsViewController: FormViewController {
         }.onChange { row in
             guard let value = row.value else {
                 UserDefaultsRepository.url.value = ""
+                self.showHideNSDetails()
                 return }
             // check the format of the URL entered by the user and trim away any spaces or "/" at the end
             var urlNSInput = value.replacingOccurrences(of: "\\s+$", with: "", options: .regularExpression)
@@ -41,7 +64,8 @@ class SettingsViewController: FormViewController {
             UserDefaultsRepository.url.value = urlNSInput.lowercased()
             // set the row value back to the correctly formatted URL so that the user immediately sees how it should have been written
             row.value = UserDefaultsRepository.url.value
-        }
+            self.showHideNSDetails()
+            }
         <<< TextRow(){ row in
             row.title = "NS Token"
             row.placeholder = "Leave blank if not using tokens"
@@ -109,7 +133,7 @@ class SettingsViewController: FormViewController {
                }
            ), onDismiss: nil)
         }
-        <<< ButtonRow() {
+        <<< ButtonRow("graphSettings") {
            $0.title = "Graph Settings"
            $0.presentationMode = .show(
                controllerProvider: .callback(builder: {
@@ -119,7 +143,7 @@ class SettingsViewController: FormViewController {
                }
            ), onDismiss: nil)
         }
-        <<< ButtonRow() {
+        <<< ButtonRow("informationDisplaySettings") {
            $0.title = "Information Display Settings"
            $0.presentationMode = .show(
                controllerProvider: .callback(builder: {
@@ -131,9 +155,9 @@ class SettingsViewController: FormViewController {
             
         }
         
-        +++ Section("Watch App Settings")
+        +++ Section("Integrations")
         <<< ButtonRow() {
-           $0.title = "Configure Watch App"
+           $0.title = "Apple Watch and Carplay"
            $0.presentationMode = .show(
                controllerProvider: .callback(builder: {
                   let controller = WatchSettingsViewController()
@@ -156,6 +180,10 @@ class SettingsViewController: FormViewController {
            ), onDismiss: nil)
             
         }
+    
+        showHideNSDetails()
       
     }
+    
+    
 }

Plik diff jest za duży
+ 110 - 61
LoopFollow/ViewControllers/WatchSettingsViewController.swift