Jelajahi Sumber

Merge branch 'watch' of github.com:polscm32/Trio-dev into watch

Deniz Cengiz 1 tahun lalu
induk
melakukan
b3bca7910a

+ 10 - 16
Trio Watch App Extension/Views/BolusInputView.swift

@@ -13,16 +13,7 @@ struct BolusInputView: View {
     @FocusState private var isCrownFocused: Bool
 
     private var effectiveBolusLimit: Double {
-        // Extract current IOB from string and convert to Double
-        let currentIOB = Double(state.iob?.replacingOccurrences(of: " U", with: "") ?? "0") ?? 0
-
-        // Calculate available IOB
-        let availableIOB = max(0, Double(truncating: state.maxIOB as NSNumber) - currentIOB)
-
-        return min(
-            Double(truncating: state.maxBolus as NSNumber),
-            availableIOB
-        )
+        Double(truncating: state.maxBolus as NSNumber)
     }
 
     var trioBackgroundColor = LinearGradient(
@@ -37,7 +28,7 @@ struct BolusInputView: View {
                 ProgressView("Calculating Bolus...")
                 Spacer()
             } else {
-                if effectiveBolusLimit == 0 {
+                if effectiveBolusLimit <= 0 {
                     VStack(spacing: 8) {
                         Text("Bolus limit cannot be fetched from phone!").font(.headline)
                         Text("Check device settings, connect to phone, and try again.").font(.caption)
@@ -62,10 +53,10 @@ struct BolusInputView: View {
                         }) {
                             Image(systemName: "minus.circle.fill")
                                 .font(.title3)
-                                .foregroundColor(Color.insulin)
+                                .tint(Color.insulin)
                         }
                         .buttonStyle(.borderless)
-                        .disabled(bolusAmount == 0)
+                        .disabled(bolusAmount <= 0)
 
                         Spacer()
 
@@ -92,11 +83,14 @@ struct BolusInputView: View {
 
                         // "+" Button
                         Button(action: {
-                            bolusAmount += Double(truncating: state.bolusIncrement as NSNumber)
+                            bolusAmount = min(
+                                effectiveBolusLimit,
+                                bolusAmount + Double(truncating: state.bolusIncrement as NSNumber)
+                            )
                         }) {
                             Image(systemName: "plus.circle.fill")
                                 .font(.title3)
-                                .foregroundColor(Color.insulin)
+                                .tint(Color.insulin)
                         }
                         .buttonStyle(.borderless)
                         .disabled(bolusAmount >= effectiveBolusLimit)
@@ -121,7 +115,7 @@ struct BolusInputView: View {
                     }
                     .buttonStyle(.bordered)
                     .tint(Color.insulin)
-                    .disabled(!(bolusAmount > 0.0) || bolusAmount >= effectiveBolusLimit)
+                    .disabled(!(bolusAmount > 0.0) || bolusAmount > effectiveBolusLimit)
 
                     Text(String(format: "Recommended: %.1f U", NSDecimalNumber(decimal: state.recommendedBolus).doubleValue))
                         .font(.footnote)

+ 6 - 16
Trio Watch App Extension/Views/CarbsInputView.swift

@@ -12,16 +12,7 @@ struct CarbsInputView: View {
     let continueToBolus: Bool
 
     private var effectiveCarbsLimit: Double {
-        // Extract current COB from string and convert to Double
-        let currentCOB = Double(state.cob?.replacingOccurrences(of: " g", with: "") ?? "0") ?? 0
-
-        // Calculate available COB
-        let availableCOB = max(0, Double(truncating: state.maxCOB as NSNumber) - currentCOB)
-
-        return min(
-            Double(truncating: state.maxCarbs as NSNumber),
-            availableCOB
-        )
+        Double(truncating: state.maxCarbs as NSNumber)
     }
 
     var trioBackgroundColor = LinearGradient(
@@ -41,16 +32,15 @@ struct CarbsInputView: View {
                 // "-" Button
                 Button(action: {
                     if carbsAmount > 0 {
-                        let currentAmount = carbsAmount
                         carbsAmount < 5 ? carbsAmount = 0 : (carbsAmount -= 5)
                     }
                 }) {
                     Image(systemName: "minus.circle.fill")
                         .font(.title3)
-                        .foregroundColor(.orange)
+                        .tint(.orange)
                 }
                 .buttonStyle(.borderless)
-                .disabled(carbsAmount < 1)
+                .disabled(carbsAmount <= 0)
 
                 Spacer()
 
@@ -75,11 +65,11 @@ struct CarbsInputView: View {
 
                 // "+" Button
                 Button(action: {
-                    carbsAmount += 5
+                    carbsAmount = min(effectiveCarbsLimit, carbsAmount + 5)
                 }) {
                     Image(systemName: "plus.circle.fill")
                         .font(.title3)
-                        .foregroundColor(.orange)
+                        .tint(.orange)
                 }
                 .buttonStyle(.borderless)
                 .disabled(carbsAmount >= effectiveCarbsLimit)
@@ -109,7 +99,7 @@ struct CarbsInputView: View {
             }
             .buttonStyle(.bordered)
             .tint(.orange)
-            .disabled(!(carbsAmount > 0.0) || carbsAmount >= effectiveCarbsLimit)
+            .disabled(!(carbsAmount > 0.0) || carbsAmount > effectiveCarbsLimit)
         }
         .background(trioBackgroundColor)
         .toolbar {

+ 0 - 14
Trio Watch App Extension/WatchState.swift

@@ -44,8 +44,6 @@ import WatchConnectivity
     var maxCarbs: Decimal = 250
     var maxFat: Decimal = 250
     var maxProtein: Decimal = 250
-    var maxIOB: Decimal = 0
-    var maxCOB: Decimal = 120
 
     // Pump specific dosing increment
     var bolusIncrement: Decimal = 0.05
@@ -572,18 +570,6 @@ import WatchConnectivity
             }
         }
 
-        if let maxIOBValue = message[WatchMessageKeys.maxIOB] {
-            if let decimalValue = (maxIOBValue as? NSNumber)?.decimalValue {
-                maxIOB = decimalValue
-            }
-        }
-
-        if let maxCOBValue = message[WatchMessageKeys.maxCOB] {
-            if let decimalValue = (maxCOBValue as? NSNumber)?.decimalValue {
-                maxCOB = decimalValue
-            }
-        }
-
         if let bolusIncrement = message[WatchMessageKeys.bolusIncrement] {
             if let decimalValue = (bolusIncrement as? NSNumber)?.decimalValue {
                 self.bolusIncrement = decimalValue

+ 0 - 2
Trio/Sources/Models/WatchMessageKeys.swift

@@ -45,8 +45,6 @@ enum WatchMessageKeys {
     static let maxCarbs = "maxCarbs"
     static let maxFat = "maxFat"
     static let maxProtein = "maxProtein"
-    static let maxIOB = "maxIOB"
-    static let maxCOB = "maxCOB"
     static let bolusIncrement = "bolusIncrement"
     static let confirmBolusFaster = "confirmBolusFaster"
 }

+ 0 - 6
Trio/Sources/Models/WatchState.swift

@@ -20,8 +20,6 @@ struct WatchState: Hashable, Equatable, Sendable, Encodable {
     var maxCarbs: Decimal = 250
     var maxFat: Decimal = 250
     var maxProtein: Decimal = 250
-    var maxIOB: Decimal = 0
-    var maxCOB: Decimal = 120
 
     // Pump specific dosing increment
     var bolusIncrement: Decimal = 0.05
@@ -46,8 +44,6 @@ struct WatchState: Hashable, Equatable, Sendable, Encodable {
             lhs.maxCarbs == rhs.maxCarbs &&
             lhs.maxFat == rhs.maxFat &&
             lhs.maxProtein == rhs.maxProtein &&
-            lhs.maxIOB == rhs.maxIOB &&
-            lhs.maxCOB == rhs.maxCOB &&
             lhs.bolusIncrement == rhs.bolusIncrement &&
             lhs.confirmBolusFaster == rhs.confirmBolusFaster
     }
@@ -72,8 +68,6 @@ struct WatchState: Hashable, Equatable, Sendable, Encodable {
         hasher.combine(maxCarbs)
         hasher.combine(maxFat)
         hasher.combine(maxProtein)
-        hasher.combine(maxIOB)
-        hasher.combine(maxCOB)
         hasher.combine(bolusIncrement)
         hasher.combine(confirmBolusFaster)
     }

+ 1 - 14
Trio/Sources/Services/WatchManager/AppleWatchManager.swift

@@ -56,7 +56,6 @@ final class BaseWatchManager: NSObject, WCSessionDelegate, Injectable, WatchMana
         }
         broadcaster.register(SettingsObserver.self, observer: self)
         broadcaster.register(PumpSettingsObserver.self, observer: self)
-        broadcaster.register(PreferencesObserver.self, observer: self)
 
         // Observer for OrefDetermination and adjustments
         coreDataPublisher =
@@ -286,8 +285,6 @@ final class BaseWatchManager: NSObject, WCSessionDelegate, Injectable, WatchMana
             watchState.maxCarbs = self.settingsManager.settings.maxCarbs
             watchState.maxFat = self.settingsManager.settings.maxFat
             watchState.maxProtein = self.settingsManager.settings.maxProtein
-            watchState.maxIOB = self.settingsManager.preferences.maxIOB
-            watchState.maxCOB = self.settingsManager.preferences.maxCOB
             watchState.bolusIncrement = self.settingsManager.preferences.bolusIncrement
             watchState.confirmBolusFaster = self.settingsManager.settings.confirmBolusFaster
 
@@ -405,8 +402,6 @@ final class BaseWatchManager: NSObject, WCSessionDelegate, Injectable, WatchMana
             WatchMessageKeys.maxCarbs: state.maxCarbs,
             WatchMessageKeys.maxFat: state.maxFat,
             WatchMessageKeys.maxProtein: state.maxProtein,
-            WatchMessageKeys.maxIOB: state.maxIOB,
-            WatchMessageKeys.maxCOB: state.maxCOB,
             WatchMessageKeys.bolusIncrement: state.bolusIncrement,
             WatchMessageKeys.confirmBolusFaster: state.confirmBolusFaster
         ]
@@ -947,15 +942,7 @@ final class BaseWatchManager: NSObject, WCSessionDelegate, Injectable, WatchMana
 }
 
 // TODO: - is there a better approach than setting up the watch state every time a setting has changed?
-extension BaseWatchManager: SettingsObserver, PumpSettingsObserver, PreferencesObserver {
-    // to update maxCOB, maxIOB
-    func preferencesDidChange(_: Preferences) {
-        Task {
-            let state = await self.setupWatchState()
-            await self.sendDataToWatch(state)
-        }
-    }
-
+extension BaseWatchManager: SettingsObserver, PumpSettingsObserver {
     // to update maxBolus
     func pumpSettingsDidChange(_: PumpSettings) {
         Task {