فهرست منبع

ConfirmationDialogs to cancel

Robert 1 سال پیش
والد
کامیت
f0fdc44387
1فایلهای تغییر یافته به همراه53 افزوده شده و 48 حذف شده
  1. 53 48
      FreeAPS/Sources/Modules/Home/View/HomeRootView.swift

+ 53 - 48
FreeAPS/Sources/Modules/Home/View/HomeRootView.swift

@@ -11,8 +11,9 @@ extension Home {
         @StateObject var state = StateModel()
         @State var isStatusPopupPresented = false
         @State var showCancelAlert = false
-        @State var showTempTargetCancelAlert = false
         @State var showCancelConfirmDialog = false
+        @State var isConfirmStopOverrideShown = false
+        @State var isConfirmStopTempTargetShown = false
         @State var isMenuPresented = false
         @State var showTreatments = false
         @State var selectedTab: Int = 0
@@ -543,6 +544,54 @@ extension Home {
                 }
         }
 
+        @ViewBuilder func adjustmentsCancelTempTargetView() -> some View {
+            Image(systemName: "xmark.app")
+                .font(.system(size: 24))
+                .confirmationDialog(
+                    "Stop the Temp Target \"\(latestTempTarget.first?.name ?? "")\"?",
+                    isPresented: $isConfirmStopTempTargetShown,
+                    titleVisibility: .visible
+                ) {
+                    Button("Stop", role: .destructive) {
+                        Task {
+                            guard let objectID = latestTempTarget.first?.objectID else { return }
+                            await state.cancelTempTarget(withID: objectID)
+                        }
+                    }
+                    Button("Cancel", role: .cancel) {}
+                }
+                .padding(.trailing, 8)
+                .onTapGesture {
+                    if !latestTempTarget.isEmpty {
+                        isConfirmStopTempTargetShown = true
+                    }
+                }
+        }
+
+        @ViewBuilder func adjustmentsCancelOverrideView() -> some View {
+            Image(systemName: "xmark.app")
+                .font(.system(size: 24))
+                .confirmationDialog(
+                    "Stop the Override \"\(latestOverride.first?.name ?? "")\"?",
+                    isPresented: $isConfirmStopOverrideShown,
+                    titleVisibility: .visible
+                ) {
+                    Button("Stop", role: .destructive) {
+                        Task {
+                            guard let objectID = latestOverride.first?.objectID else { return }
+                            await state.cancelOverride(withID: objectID)
+                        }
+                    }
+                    Button("Cancel", role: .cancel) {}
+                }
+                .padding(.trailing, 8)
+                .onTapGesture {
+                    if !latestOverride.isEmpty {
+                        isConfirmStopOverrideShown = true
+                    }
+                }
+        }
+
         @ViewBuilder func adjustmentView(geo: GeometryProxy) -> some View {
             ZStack {
                 /// rectangle as background
@@ -580,31 +629,20 @@ extension Home {
                                 } else if !latestOverride.isEmpty {
                                     showCancelAlert = true
                                 } else if !latestTempTarget.isEmpty {
-                                    showTempTargetCancelAlert = true
+                                    showCancelAlert = true
                                 }
                             })
                         }
                     } else if let overrideString = overrideString {
                         adjustmentsOverrideView(overrideString)
-
                         Spacer()
+                        adjustmentsCancelOverrideView()
 
-                        adjustmentsCancelView({
-                            if !latestOverride.isEmpty {
-                                showCancelAlert = true
-                            }
-                        })
                     } else if let tempTargetString = tempTargetString {
                         HStack {
                             adjustmentsTempTargetView(tempTargetString)
-
                             Spacer()
-
-                            adjustmentsCancelView({
-                                if !latestTempTarget.isEmpty {
-                                    showTempTargetCancelAlert = true
-                                }
-                            })
+                            adjustmentsCancelTempTargetView()
                         }
                     } else {
                         VStack {
@@ -625,39 +663,6 @@ extension Home {
                             .foregroundStyle(Color.clear)
                     }
                 }.padding(.horizontal, 10)
-                    .alert(
-                        "Cancel Override?",
-                        isPresented: $showCancelAlert,
-                        actions: {
-                            Button("No", role: .cancel) {}
-                            Button("Yes", role: .destructive) {
-                                Task {
-                                    if !latestOverride.isEmpty {
-                                        guard let objectID = latestOverride.first?.objectID else { return }
-                                        await state.cancelOverride(withID: objectID)
-                                    }
-                                }
-                            }
-                        },
-                        message: { Text("This will change settings back to your normal profile.")
-                        }
-                    )
-                    .alert(
-                        "Cancel Temp Target?",
-                        isPresented: $showTempTargetCancelAlert,
-                        actions: {
-                            Button("No", role: .cancel) {}
-                            Button("Yes", role: .destructive) {
-                                Task {
-                                    if !latestTempTarget.isEmpty {
-                                        guard let objectID = latestTempTarget.first?.objectID else { return }
-                                        await state.cancelTempTarget(withID: objectID)
-                                    }
-                                }
-                            }
-                        },
-                        message: { Text("This will change settings back to your regular target.") }
-                    )
                     .confirmationDialog("Adjustment to Cancel", isPresented: $showCancelConfirmDialog) {
                         Button("Cancel Override") {
                             Task {