ソースを参照

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

Deniz Cengiz 1 年間 前
コミット
b3bca7910a

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

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

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

@@ -12,16 +12,7 @@ struct CarbsInputView: View {
     let continueToBolus: Bool
     let continueToBolus: Bool
 
 
     private var effectiveCarbsLimit: Double {
     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(
     var trioBackgroundColor = LinearGradient(
@@ -41,16 +32,15 @@ struct CarbsInputView: View {
                 // "-" Button
                 // "-" Button
                 Button(action: {
                 Button(action: {
                     if carbsAmount > 0 {
                     if carbsAmount > 0 {
-                        let currentAmount = carbsAmount
                         carbsAmount < 5 ? carbsAmount = 0 : (carbsAmount -= 5)
                         carbsAmount < 5 ? carbsAmount = 0 : (carbsAmount -= 5)
                     }
                     }
                 }) {
                 }) {
                     Image(systemName: "minus.circle.fill")
                     Image(systemName: "minus.circle.fill")
                         .font(.title3)
                         .font(.title3)
-                        .foregroundColor(.orange)
+                        .tint(.orange)
                 }
                 }
                 .buttonStyle(.borderless)
                 .buttonStyle(.borderless)
-                .disabled(carbsAmount < 1)
+                .disabled(carbsAmount <= 0)
 
 
                 Spacer()
                 Spacer()
 
 
@@ -75,11 +65,11 @@ struct CarbsInputView: View {
 
 
                 // "+" Button
                 // "+" Button
                 Button(action: {
                 Button(action: {
-                    carbsAmount += 5
+                    carbsAmount = min(effectiveCarbsLimit, carbsAmount + 5)
                 }) {
                 }) {
                     Image(systemName: "plus.circle.fill")
                     Image(systemName: "plus.circle.fill")
                         .font(.title3)
                         .font(.title3)
-                        .foregroundColor(.orange)
+                        .tint(.orange)
                 }
                 }
                 .buttonStyle(.borderless)
                 .buttonStyle(.borderless)
                 .disabled(carbsAmount >= effectiveCarbsLimit)
                 .disabled(carbsAmount >= effectiveCarbsLimit)
@@ -109,7 +99,7 @@ struct CarbsInputView: View {
             }
             }
             .buttonStyle(.bordered)
             .buttonStyle(.bordered)
             .tint(.orange)
             .tint(.orange)
-            .disabled(!(carbsAmount > 0.0) || carbsAmount >= effectiveCarbsLimit)
+            .disabled(!(carbsAmount > 0.0) || carbsAmount > effectiveCarbsLimit)
         }
         }
         .background(trioBackgroundColor)
         .background(trioBackgroundColor)
         .toolbar {
         .toolbar {

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

@@ -44,8 +44,6 @@ import WatchConnectivity
     var maxCarbs: Decimal = 250
     var maxCarbs: Decimal = 250
     var maxFat: Decimal = 250
     var maxFat: Decimal = 250
     var maxProtein: Decimal = 250
     var maxProtein: Decimal = 250
-    var maxIOB: Decimal = 0
-    var maxCOB: Decimal = 120
 
 
     // Pump specific dosing increment
     // Pump specific dosing increment
     var bolusIncrement: Decimal = 0.05
     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 bolusIncrement = message[WatchMessageKeys.bolusIncrement] {
             if let decimalValue = (bolusIncrement as? NSNumber)?.decimalValue {
             if let decimalValue = (bolusIncrement as? NSNumber)?.decimalValue {
                 self.bolusIncrement = decimalValue
                 self.bolusIncrement = decimalValue

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

@@ -45,8 +45,6 @@ enum WatchMessageKeys {
     static let maxCarbs = "maxCarbs"
     static let maxCarbs = "maxCarbs"
     static let maxFat = "maxFat"
     static let maxFat = "maxFat"
     static let maxProtein = "maxProtein"
     static let maxProtein = "maxProtein"
-    static let maxIOB = "maxIOB"
-    static let maxCOB = "maxCOB"
     static let bolusIncrement = "bolusIncrement"
     static let bolusIncrement = "bolusIncrement"
     static let confirmBolusFaster = "confirmBolusFaster"
     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 maxCarbs: Decimal = 250
     var maxFat: Decimal = 250
     var maxFat: Decimal = 250
     var maxProtein: Decimal = 250
     var maxProtein: Decimal = 250
-    var maxIOB: Decimal = 0
-    var maxCOB: Decimal = 120
 
 
     // Pump specific dosing increment
     // Pump specific dosing increment
     var bolusIncrement: Decimal = 0.05
     var bolusIncrement: Decimal = 0.05
@@ -46,8 +44,6 @@ struct WatchState: Hashable, Equatable, Sendable, Encodable {
             lhs.maxCarbs == rhs.maxCarbs &&
             lhs.maxCarbs == rhs.maxCarbs &&
             lhs.maxFat == rhs.maxFat &&
             lhs.maxFat == rhs.maxFat &&
             lhs.maxProtein == rhs.maxProtein &&
             lhs.maxProtein == rhs.maxProtein &&
-            lhs.maxIOB == rhs.maxIOB &&
-            lhs.maxCOB == rhs.maxCOB &&
             lhs.bolusIncrement == rhs.bolusIncrement &&
             lhs.bolusIncrement == rhs.bolusIncrement &&
             lhs.confirmBolusFaster == rhs.confirmBolusFaster
             lhs.confirmBolusFaster == rhs.confirmBolusFaster
     }
     }
@@ -72,8 +68,6 @@ struct WatchState: Hashable, Equatable, Sendable, Encodable {
         hasher.combine(maxCarbs)
         hasher.combine(maxCarbs)
         hasher.combine(maxFat)
         hasher.combine(maxFat)
         hasher.combine(maxProtein)
         hasher.combine(maxProtein)
-        hasher.combine(maxIOB)
-        hasher.combine(maxCOB)
         hasher.combine(bolusIncrement)
         hasher.combine(bolusIncrement)
         hasher.combine(confirmBolusFaster)
         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(SettingsObserver.self, observer: self)
         broadcaster.register(PumpSettingsObserver.self, observer: self)
         broadcaster.register(PumpSettingsObserver.self, observer: self)
-        broadcaster.register(PreferencesObserver.self, observer: self)
 
 
         // Observer for OrefDetermination and adjustments
         // Observer for OrefDetermination and adjustments
         coreDataPublisher =
         coreDataPublisher =
@@ -286,8 +285,6 @@ final class BaseWatchManager: NSObject, WCSessionDelegate, Injectable, WatchMana
             watchState.maxCarbs = self.settingsManager.settings.maxCarbs
             watchState.maxCarbs = self.settingsManager.settings.maxCarbs
             watchState.maxFat = self.settingsManager.settings.maxFat
             watchState.maxFat = self.settingsManager.settings.maxFat
             watchState.maxProtein = self.settingsManager.settings.maxProtein
             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.bolusIncrement = self.settingsManager.preferences.bolusIncrement
             watchState.confirmBolusFaster = self.settingsManager.settings.confirmBolusFaster
             watchState.confirmBolusFaster = self.settingsManager.settings.confirmBolusFaster
 
 
@@ -405,8 +402,6 @@ final class BaseWatchManager: NSObject, WCSessionDelegate, Injectable, WatchMana
             WatchMessageKeys.maxCarbs: state.maxCarbs,
             WatchMessageKeys.maxCarbs: state.maxCarbs,
             WatchMessageKeys.maxFat: state.maxFat,
             WatchMessageKeys.maxFat: state.maxFat,
             WatchMessageKeys.maxProtein: state.maxProtein,
             WatchMessageKeys.maxProtein: state.maxProtein,
-            WatchMessageKeys.maxIOB: state.maxIOB,
-            WatchMessageKeys.maxCOB: state.maxCOB,
             WatchMessageKeys.bolusIncrement: state.bolusIncrement,
             WatchMessageKeys.bolusIncrement: state.bolusIncrement,
             WatchMessageKeys.confirmBolusFaster: state.confirmBolusFaster
             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?
 // 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
     // to update maxBolus
     func pumpSettingsDidChange(_: PumpSettings) {
     func pumpSettingsDidChange(_: PumpSettings) {
         Task {
         Task {