Require confirmation before deleting a system (iOS + Android)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -379,6 +379,11 @@
|
||||
"charger.source.generator" = "Generator";
|
||||
"charger.source.alternator" = "Alternator";
|
||||
|
||||
// MARK: - System Deletion
|
||||
"systems.delete.confirm.title" = "Delete System?";
|
||||
"systems.delete.confirm.message" = "This will permanently delete the system and all its components.";
|
||||
"systems.delete.confirm.button" = "Delete";
|
||||
|
||||
// MARK: - Share Menu
|
||||
"overview.share.diagram" = "Wiring Diagram";
|
||||
"overview.share.pdf" = "Full Report (PDF)";
|
||||
|
||||
@@ -18,6 +18,7 @@ struct SystemsView: View {
|
||||
@State private var showingComponentLibrary = false
|
||||
@State private var showingSettings = false
|
||||
@State private var hasPerformedInitialAutoNavigation = false
|
||||
@State private var systemsPendingDeletion: [ElectricalSystem]?
|
||||
|
||||
private let systemColorOptions = [
|
||||
"blue", "green", "orange", "red", "purple", "yellow",
|
||||
@@ -87,7 +88,9 @@ struct SystemsView: View {
|
||||
.accessibilityHint(Text("systems.list.row.accessibility.hint", comment: "Accessibility hint for systems list row"))
|
||||
.accessibilityAddTraits(.isButton)
|
||||
}
|
||||
.onDelete(perform: deleteSystems)
|
||||
.onDelete { offsets in
|
||||
systemsPendingDeletion = offsets.map { systems[$0] }
|
||||
}
|
||||
}
|
||||
.accessibilityIdentifier("systems-list")
|
||||
}
|
||||
@@ -133,6 +136,28 @@ struct SystemsView: View {
|
||||
SettingsView()
|
||||
.environmentObject(unitSettings)
|
||||
}
|
||||
.alert(
|
||||
String(localized: "systems.delete.confirm.title", defaultValue: "Delete System?"),
|
||||
isPresented: Binding(
|
||||
get: { systemsPendingDeletion != nil },
|
||||
set: { if !$0 { systemsPendingDeletion = nil } }
|
||||
)
|
||||
) {
|
||||
Button(
|
||||
String(localized: "systems.delete.confirm.button", defaultValue: "Delete"),
|
||||
role: .destructive
|
||||
) {
|
||||
if let pending = systemsPendingDeletion {
|
||||
deleteSystems(pending)
|
||||
systemsPendingDeletion = nil
|
||||
}
|
||||
}
|
||||
Button(String(localized: "battery.editor.alert.cancel", defaultValue: "Cancel"), role: .cancel) {
|
||||
systemsPendingDeletion = nil
|
||||
}
|
||||
} message: {
|
||||
Text(String(localized: "systems.delete.confirm.message", defaultValue: "This will permanently delete the system and all its components."))
|
||||
}
|
||||
}
|
||||
|
||||
private var systemsEmptyState: some View {
|
||||
@@ -416,8 +441,7 @@ struct SystemsView: View {
|
||||
return candidate
|
||||
}
|
||||
|
||||
private func deleteSystems(offsets: IndexSet) {
|
||||
let systemsToDelete = offsets.map { systems[$0] }
|
||||
private func deleteSystems(_ systemsToDelete: [ElectricalSystem]) {
|
||||
withAnimation {
|
||||
for system in systemsToDelete {
|
||||
AnalyticsTracker.log(
|
||||
|
||||
@@ -444,6 +444,11 @@
|
||||
"charger.source.generator" = "Generator";
|
||||
"charger.source.alternator" = "Lichtmaschine";
|
||||
|
||||
// MARK: - System Deletion
|
||||
"systems.delete.confirm.title" = "System löschen?";
|
||||
"systems.delete.confirm.message" = "Das System und alle seine Komponenten werden dauerhaft gelöscht.";
|
||||
"systems.delete.confirm.button" = "Löschen";
|
||||
|
||||
// MARK: - Share Menu
|
||||
"overview.share.diagram" = "Schaltplan";
|
||||
"overview.share.pdf" = "Vollständiger Bericht (PDF)";
|
||||
|
||||
@@ -406,6 +406,11 @@
|
||||
"charger.source.generator" = "Generador";
|
||||
"charger.source.alternator" = "Alternador";
|
||||
|
||||
// MARK: - System Deletion
|
||||
"systems.delete.confirm.title" = "¿Eliminar sistema?";
|
||||
"systems.delete.confirm.message" = "Esto eliminará permanentemente el sistema y todos sus componentes.";
|
||||
"systems.delete.confirm.button" = "Eliminar";
|
||||
|
||||
// MARK: - Share Menu
|
||||
"overview.share.diagram" = "Diagrama de cableado";
|
||||
"overview.share.pdf" = "Informe completo (PDF)";
|
||||
|
||||
@@ -406,6 +406,11 @@
|
||||
"charger.source.generator" = "Groupe électrogène";
|
||||
"charger.source.alternator" = "Alternateur";
|
||||
|
||||
// MARK: - System Deletion
|
||||
"systems.delete.confirm.title" = "Supprimer le système ?";
|
||||
"systems.delete.confirm.message" = "Cela supprimera définitivement le système et tous ses composants.";
|
||||
"systems.delete.confirm.button" = "Supprimer";
|
||||
|
||||
// MARK: - Share Menu
|
||||
"overview.share.diagram" = "Schéma de câblage";
|
||||
"overview.share.pdf" = "Rapport complet (PDF)";
|
||||
|
||||
@@ -406,6 +406,11 @@
|
||||
"charger.source.generator" = "Generator";
|
||||
"charger.source.alternator" = "Dynamo";
|
||||
|
||||
// MARK: - System Deletion
|
||||
"systems.delete.confirm.title" = "Systeem verwijderen?";
|
||||
"systems.delete.confirm.message" = "Dit verwijdert het systeem en alle bijbehorende componenten permanent.";
|
||||
"systems.delete.confirm.button" = "Verwijderen";
|
||||
|
||||
// MARK: - Share Menu
|
||||
"overview.share.diagram" = "Bedradingsschema";
|
||||
"overview.share.pdf" = "Volledig rapport (PDF)";
|
||||
|
||||
Reference in New Issue
Block a user