polscm32 aka Marvout 1 год назад
Родитель
Сommit
7b47c7b020
1 измененных файлов с 15 добавлено и 12 удалено
  1. 15 12
      FreeAPS/Sources/Modules/Bolus/View/MealPresetView.swift

+ 15 - 12
FreeAPS/Sources/Modules/Bolus/View/MealPresetView.swift

@@ -10,7 +10,6 @@ struct MealPresetView: View {
 
     @State private var showAlert = false
     @State private var dish: String = ""
-    @State private var saved: Bool = false
 
     @State private var addNewPreset: Bool = false
 
@@ -84,6 +83,7 @@ struct MealPresetView: View {
     private var addNewPresetButton: some View {
         Button(action: {
             addNewPreset = true
+            resetValues()
         }, label: {
             HStack {
                 Spacer()
@@ -159,10 +159,11 @@ struct MealPresetView: View {
                 }
                 .labelsHidden()
                 .frame(maxWidth: .infinity, alignment: .center)
-                ._onBindingChange($state.selection) { _ in
-                    carbs += ((state.selection?.carbs ?? 0) as NSDecimalNumber) as Decimal
-                    fat += ((state.selection?.fat ?? 0) as NSDecimalNumber) as Decimal
-                    protein += ((state.selection?.protein ?? 0) as NSDecimalNumber) as Decimal
+                .onChange(of: state.selection) { newSelection in
+                    guard let selected = newSelection else { return }
+                    carbs += ((selected.carbs ?? 0) as NSDecimalNumber) as Decimal
+                    fat += ((selected.fat ?? 0) as NSDecimalNumber) as Decimal
+                    protein += ((selected.protein ?? 0) as NSDecimalNumber) as Decimal
                     state.addToSummation()
                 }
                 if state.selection != nil {
@@ -206,19 +207,21 @@ struct MealPresetView: View {
 
     private var savePresetButton: some View {
         Button {
-            saved = true
-            if dish != "", saved {
+            if dish != "" {
                 let preset = MealPresetStored(context: moc)
                 preset.dish = dish
                 preset.fat = presetFat as NSDecimalNumber
                 preset.protein = presetProtein as NSDecimalNumber
                 preset.carbs = presetCarbs as NSDecimalNumber
-                if self.moc.hasChanges {
-                    try? moc.save()
+
+                do {
+                    guard self.moc.hasChanges else { return }
+                    try moc.save()
+                    resetValues()
+                    addNewPreset = false
+                } catch let error as NSError {
+                    debugPrint("\(DebuggingIdentifiers.failed) Failed to save Meal Preset with error: \(error.userInfo)")
                 }
-                resetValues()
-                saved = false
-                addNewPreset = false
             }
         }
         label: {