Jonas Björkert 1 год назад
Родитель
Сommit
87e57cccc3

+ 20 - 0
LoopFollow/Contact/Settings/ContactSettingsView.swift

@@ -34,6 +34,26 @@ struct ContactSettingsView: View {
                             }
                         }
                 }
+
+                if viewModel.contactEnabled {
+                    Section(header: Text("Additional Information")) {
+                        Toggle("Show Trend", isOn: $viewModel.contactTrend)
+                            .toggleStyle(SwitchToggleStyle())
+                            .onChange(of: viewModel.contactTrend) { isTrendEnabled in
+                                if isTrendEnabled {
+                                    viewModel.contactDelta = false
+                                }
+                            }
+
+                        Toggle("Show Delta", isOn: $viewModel.contactDelta)
+                            .toggleStyle(SwitchToggleStyle())
+                            .onChange(of: viewModel.contactDelta) { isDeltaEnabled in
+                                if isDeltaEnabled {
+                                    viewModel.contactTrend = false
+                                }
+                            }
+                    }
+                }
             }
             .navigationBarTitle("Contact Settings", displayMode: .inline)
             .toolbar {

+ 33 - 21
LoopFollow/Contact/Settings/ContactSettingsViewModel.swift

@@ -10,33 +10,45 @@ import Foundation
 import Combine
 
 class ContactSettingsViewModel: ObservableObject {
-    @Published var contactEnabled: Bool
+    @Published var contactEnabled: Bool {
+        didSet {
+            storage.contactEnabled.value = contactEnabled
+        }
+    }
+
+    @Published var contactTrend: Bool {
+        didSet {
+            if contactTrend {
+                contactDelta = false
+            }
+            storage.contactTrend.value = contactTrend
+        }
+    }
 
-    private var storage = ObservableUserDefaults.shared
+    @Published var contactDelta: Bool {
+        didSet {
+            if contactDelta {
+                contactTrend = false
+            }
+            storage.contactDelta.value = contactDelta
+        }
+    }
+
+    private let storage = ObservableUserDefaults.shared
     private var cancellables = Set<AnyCancellable>()
-    private var isUpdatingFromStorage = false // Prevent recursive updates
 
     init() {
         self.contactEnabled = storage.contactEnabled.value
+        self.contactTrend = storage.contactTrend.value
+        self.contactDelta = storage.contactDelta.value
 
-        // Observe changes in UserDefaults
         storage.contactEnabled.$value
-            .sink { [weak self] newValue in
-                guard let self = self else { return }
-                self.isUpdatingFromStorage = true
-                self.contactEnabled = newValue
-                self.isUpdatingFromStorage = false
-            }
-            .store(in: &cancellables)
-
-        // Update UserDefaults when local property changes
-        $contactEnabled
-            .sink { [weak self] newValue in
-                guard let self = self else { return }
-                // Prevent updating UserDefaults during storage sync
-                guard !self.isUpdatingFromStorage else { return }
-                self.storage.contactEnabled.value = newValue
-            }
-            .store(in: &cancellables)
+            .assign(to: &$contactEnabled)
+
+        storage.contactTrend.$value
+            .assign(to: &$contactTrend)
+
+        storage.contactDelta.$value
+            .assign(to: &$contactDelta)
     }
 }

+ 9 - 1
LoopFollow/Controllers/Nightscout/BGData.swift

@@ -289,7 +289,15 @@ extension MainViewController {
 
             // Update contact
             if ObservableUserDefaults.shared.contactEnabled.value {
-                self.contactImageUpdater.updateContactImage(bgValue: bgTextStr, extra: snoozerDelta, stale: deltaTime >= 12)
+                var extra: String = ""
+
+                if ObservableUserDefaults.shared.contactTrend.value {
+                    extra = snoozerDirection
+                } else if ObservableUserDefaults.shared.contactDelta.value {
+                    extra = snoozerDelta
+                }
+
+                self.contactImageUpdater.updateContactImage(bgValue: bgTextStr, extra: extra, stale: deltaTime >= 12)
             }
         }
     }