PONGo_ios/ResetConfirmSheet.swift
2026-05-31 14:11:29 +02:00

62 lines
2.3 KiB
Swift

import SwiftUI
/// Strong, reusable confirmation for service-affecting device resets: a red
/// warning, an explicit acknowledgement the user must switch on, and a prominent
/// red action button that stays disabled until then. Presented as a sheet so it
/// can't be dismissed by an accidental background tap into a destructive action.
struct ResetConfirmSheet: View {
let deviceKind: String // "ONU" / "OLT"
let deviceName: String
let onConfirm: () -> Void
@Environment(\.dismiss) private var dismiss
@State private var acknowledged = false
var body: some View {
NavigationStack {
Form {
Section {
HStack(spacing: 12) {
Image(systemName: "exclamationmark.triangle.fill")
.font(.title2)
.foregroundStyle(.red)
Text("Service-affecting").font(.headline)
}
Text("Resetting \(deviceKind)\(deviceName)” reboots it and interrupts service for everything connected to it. This can take several minutes and can't be undone.")
.font(.subheadline)
}
Section {
Toggle("I understand this will interrupt service", isOn: $acknowledged)
.tint(.red)
}
Section {
Button {
onConfirm()
dismiss()
} label: {
HStack {
Spacer()
Label("Reset \(deviceKind)", systemImage: "arrow.clockwise")
.fontWeight(.semibold)
Spacer()
}
}
.buttonStyle(.borderedProminent)
.tint(.red)
.disabled(!acknowledged)
}
.listRowBackground(Color.clear)
}
.navigationTitle("Reset \(deviceKind)?")
.navigationBarTitleDisplayMode(.inline)
.toolbar {
ToolbarItem(placement: .cancellationAction) {
Button("Cancel") { dismiss() }
}
}
}
.presentationDetents([.medium])
}
}