Bläddra i källkod

Improve initial setup and UI reactivity

Jonas Björkert 1 år sedan
förälder
incheckning
03effc268c

+ 3 - 6
LoopFollow/Settings/SettingsMenuView.swift

@@ -6,9 +6,9 @@ import SwiftUI
 import UIKit
 
 struct SettingsMenuView: View {
-    // MARK: – Call-backs
+    // MARK: - Observed Objects
 
-    let onNightscoutVisibilityChange: (_ enabled: Bool) -> Void
+    @ObservedObject private var nightscoutURL = Storage.shared.url
 
     // MARK: – Local state
 
@@ -45,7 +45,7 @@ struct SettingsMenuView: View {
                         path.append(Sheet.graph)
                     }
 
-                    if IsNightscoutEnabled() {
+                    if !nightscoutURL.value.isEmpty {
                         NavigationRow(title: "Information Display Settings",
                                       icon: "info.circle")
                         {
@@ -154,9 +154,6 @@ struct SettingsMenuView: View {
                 path.append(Sheet.dexcom)
             }
         }
-        .onAppear {
-            onNightscoutVisibilityChange(IsNightscoutEnabled())
-        }
     }
 
     @ViewBuilder

+ 1 - 1
LoopFollow/Storage/Storage.swift

@@ -11,7 +11,7 @@ import UIKit
  */
 
 class Storage {
-    var remoteType = StorageValue<RemoteType>(key: "remoteType", defaultValue: .nightscout)
+    var remoteType = StorageValue<RemoteType>(key: "remoteType", defaultValue: .none)
     var deviceToken = StorageValue<String>(key: "deviceToken", defaultValue: "")
     var expirationDate = StorageValue<Date?>(key: "expirationDate", defaultValue: nil)
     var sharedSecret = StorageValue<String>(key: "sharedSecret", defaultValue: "")

+ 7 - 0
LoopFollow/ViewControllers/MainViewController.swift

@@ -291,6 +291,13 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
             }
             .store(in: &cancellables)
 
+        Storage.shared.url.$value
+            .receive(on: DispatchQueue.main)
+            .sink { [weak self] value in
+                self?.tabBarController?.tabBar.items?[3].isEnabled = !value.isEmpty
+            }
+            .store(in: &cancellables)
+
         updateQuickActions()
 
         speechSynthesizer.delegate = self

+ 1 - 4
LoopFollow/ViewControllers/SettingsViewController.swift

@@ -16,10 +16,7 @@ final class SettingsViewController: UIViewController {
         super.viewDidLoad()
 
         // Build SwiftUI menu
-        host = UIHostingController(
-            rootView: SettingsMenuView { [weak self] nightscoutEnabled in
-                self?.tabBarController?.tabBar.items?[3].isEnabled = nightscoutEnabled
-            })
+        host = UIHostingController(rootView: SettingsMenuView())
 
         // Dark-mode override
         if Storage.shared.forceDarkMode.value {