Bläddra i källkod

carbsReq badge

Ivan Valkou 5 år sedan
förälder
incheckning
5dc0b07c3a

+ 3 - 1
FreeAPS/Sources/Modules/AddCarbs/AddCarbsDataFlow.swift

@@ -2,4 +2,6 @@ enum AddCarbs {
     enum Config {}
 }
 
-protocol AddCarbsProvider: Provider {}
+protocol AddCarbsProvider: Provider {
+    var suggestion: Suggestion? { get }
+}

+ 5 - 1
FreeAPS/Sources/Modules/AddCarbs/AddCarbsProvider.swift

@@ -1,3 +1,7 @@
 extension AddCarbs {
-    final class Provider: BaseProvider, AddCarbsProvider {}
+    final class Provider: BaseProvider, AddCarbsProvider {
+        var suggestion: Suggestion? {
+            storage.retrieve(OpenAPS.Enact.suggested, as: Suggestion.self)
+        }
+    }
 }

+ 4 - 1
FreeAPS/Sources/Modules/AddCarbs/AddCarbsViewModel.swift

@@ -7,8 +7,11 @@ extension AddCarbs {
         @Injected() var apsManager: APSManager!
         @Published var carbs: Decimal = 0
         @Published var date = Date()
+        @Published var carbsRequired: Decimal?
 
-        override func subscribe() {}
+        override func subscribe() {
+            carbsRequired = provider.suggestion?.carbsReq
+        }
 
         func add() {
             guard carbs > 0 else {

+ 9 - 0
FreeAPS/Sources/Modules/AddCarbs/View/AddCarbsRootView.swift

@@ -13,6 +13,15 @@ extension AddCarbs {
 
         var body: some View {
             Form {
+                if let carbsReq = viewModel.carbsRequired {
+                    Section {
+                        HStack {
+                            Text("Carbs required")
+                            Spacer()
+                            Text(formatter.string(from: carbsReq as NSNumber)! + " g")
+                        }
+                    }
+                }
                 Section {
                     HStack {
                         Text("Amount")

+ 3 - 1
FreeAPS/Sources/Modules/Home/HomeViewModel.swift

@@ -41,7 +41,7 @@ extension Home {
         @Published var errorDate: Date? = nil
         @Published var bolusProgress: Decimal?
         @Published var eventualBG: Int?
-
+        @Published var carbsRequired: Decimal?
         @Published var allowManualTemp = false
         @Published var units: GlucoseUnits = .mmolL
 
@@ -63,6 +63,7 @@ extension Home {
             allowManualTemp = !settingsManager.settings.closedLoop
             closedLoop = settingsManager.settings.closedLoop
             lastLoopDate = apsManager.lastLoopDate
+            carbsRequired = suggestion?.carbsReq
 
             setStatusTitle()
             setupCurrentTempTarget()
@@ -289,6 +290,7 @@ extension Home.ViewModel:
 
     func suggestionDidUpdate(_ suggestion: Suggestion) {
         self.suggestion = suggestion
+        carbsRequired = suggestion.carbsReq
         setStatusTitle()
     }
 

+ 20 - 5
FreeAPS/Sources/Modules/Home/View/HomeRootView.swift

@@ -233,11 +233,22 @@ extension Home {
                         HStack {
                             Button { viewModel.showModal(for: .addCarbs) }
                             label: {
-                                Image("carbs")
-                                    .renderingMode(.template)
-                                    .resizable()
-                                    .frame(width: 24, height: 24)
-                            }.foregroundColor(.loopGreen)
+                                ZStack(alignment: Alignment(horizontal: .trailing, vertical: .bottom)) {
+                                    Image("carbs")
+                                        .renderingMode(.template)
+                                        .resizable()
+                                        .frame(width: 24, height: 24)
+                                        .foregroundColor(.loopGreen)
+                                        .padding(8)
+                                    if let carbsReq = viewModel.carbsRequired {
+                                        Text(numberFormatter.string(from: carbsReq as NSNumber)!)
+                                            .font(.caption)
+                                            .foregroundColor(.white)
+                                            .padding(4)
+                                            .background(Capsule().fill(Color.red))
+                                    }
+                                }
+                            }
                             Spacer()
                             Button { viewModel.showModal(for: .addTempTarget) }
                             label: {
@@ -245,6 +256,7 @@ extension Home {
                                     .renderingMode(.template)
                                     .resizable()
                                     .frame(width: 24, height: 24)
+                                    .padding(8)
                             }.foregroundColor(.loopYellow)
                             Spacer()
                             Button { viewModel.showModal(for: .bolus(waitForDuggestion: false)) }
@@ -253,6 +265,7 @@ extension Home {
                                     .renderingMode(.template)
                                     .resizable()
                                     .frame(width: 24, height: 24)
+                                    .padding(8)
                             }.foregroundColor(.insulin)
                             Spacer()
                             if viewModel.allowManualTemp {
@@ -262,6 +275,7 @@ extension Home {
                                         .renderingMode(.template)
                                         .resizable()
                                         .frame(width: 24, height: 24)
+                                        .padding(8)
                                 }.foregroundColor(.insulin)
                                 Spacer()
                             }
@@ -271,6 +285,7 @@ extension Home {
                                     .renderingMode(.template)
                                     .resizable()
                                     .frame(width: 24, height: 24)
+                                    .padding(8)
                             }.foregroundColor(.loopGray)
                         }
                         .padding(.horizontal, 24)