HistoryRootView+Confirmations.swift 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import SwiftUI
  2. extension History.RootView {
  3. func requestDelete(_ target: History.DeletionTarget) {
  4. deletionTarget = target
  5. }
  6. @ViewBuilder func historyConfirmations(_ content: some View) -> some View {
  7. content
  8. .confirmationDialog(
  9. deletionTarget?.title(units: state.units) ?? "",
  10. isPresented: Binding(
  11. get: { deletionTarget != nil },
  12. set: { if !$0 { deletionTarget = nil } }
  13. ),
  14. titleVisibility: .visible,
  15. presenting: deletionTarget
  16. ) { target in
  17. Button("Delete", role: .destructive) {
  18. switch target {
  19. case let .glucose(glucose):
  20. state.invokeGlucoseDeletionTask(glucose.objectID)
  21. case let .insulin(pumpEvent):
  22. state.invokeInsulinDeletionTask(pumpEvent.objectID)
  23. case let .carbs(carbEntry):
  24. state.invokeCarbDeletionTask(
  25. carbEntry.objectID,
  26. isFpuOrComplexMeal: carbEntry.isFPU || carbEntry.fat > 0 || carbEntry.protein > 0
  27. )
  28. }
  29. }
  30. Button("Cancel", role: .cancel) {}
  31. } message: { target in
  32. if let message = target.message(units: state.units) {
  33. Text(message)
  34. }
  35. }
  36. .alert("Error", isPresented: $showErrorAlert) {
  37. Button("OK", role: .cancel) {}
  38. } message: {
  39. Text(errorMessage)
  40. }
  41. }
  42. }