From ac3104b60e0df2da129eaccd95a340ed80c20256 Mon Sep 17 00:00:00 2001 From: Imran Hajiyev Date: Thu, 30 Nov 2023 16:41:14 +0400 Subject: [PATCH 1/3] feature: prevent user from deleting last vehicle --- .../Shared/Localizable.xcstrings | 42 ++++++++++++++++++- .../Shared/Settings/Views/SettingsView.swift | 14 ++++++- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/Basic-Car-Maintenance/Shared/Localizable.xcstrings b/Basic-Car-Maintenance/Shared/Localizable.xcstrings index e3b6abb3..6c5fbb74 100644 --- a/Basic-Car-Maintenance/Shared/Localizable.xcstrings +++ b/Basic-Car-Maintenance/Shared/Localizable.xcstrings @@ -731,6 +731,22 @@ } } }, + "Can't Delete Last Vehicle" : { + "localizations" : { + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Невозможно удалить последний автомобиль" + } + }, + "tr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Son Araç Silinemiyor" + } + } + } + }, "Cancel" : { "localizations" : { "be" : { @@ -3934,6 +3950,23 @@ } } }, + "The last vehicle can't be deleted" : { + "comment" : "Alert message preventing users from deleting their last vehicle", + "localizations" : { + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Последний автомобиль удалить невозможно." + } + }, + "tr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Son araç silinemez" + } + } + } + }, "The title of the event" : { "comment" : "Maintenance event title text field label placeholder", "localizations" : { @@ -4413,7 +4446,14 @@ } }, "Update Vehicle Info" : { - + "localizations" : { + "tr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Araç Bilgilerini Güncelle" + } + } + } }, "Vehicle" : { "comment" : "Maintenance event vehicle picker header", diff --git a/Basic-Car-Maintenance/Shared/Settings/Views/SettingsView.swift b/Basic-Car-Maintenance/Shared/Settings/Views/SettingsView.swift index c2b44555..3e9776d4 100644 --- a/Basic-Car-Maintenance/Shared/Settings/Views/SettingsView.swift +++ b/Basic-Car-Maintenance/Shared/Settings/Views/SettingsView.swift @@ -19,6 +19,7 @@ struct SettingsView: View { @State private var viewModel: SettingsViewModel @State private var isShowingAddVehicle = false @State private var showDeleteVehicleError = false + @State private var showDeleteVehicleAlert = false @State private var showAddVehicleError = false @State private var errorDetails: Error? @State private var copiedAppVersion: Bool = false @@ -117,7 +118,11 @@ struct SettingsView: View { Button(role: .destructive) { Task { do { - try await viewModel.deleteVehicle(vehicle) + if viewModel.vehicles.count > 1 { + try await viewModel.deleteVehicle(vehicle) + } else { + showDeleteVehicleAlert = true + } } catch { errorDetails = error showDeleteVehicleError = true @@ -240,6 +245,13 @@ struct SettingsView: View { comment: "Label to display error details.") } } + .alert("Can't Delete Last Vehicle", isPresented: $showDeleteVehicleAlert) { + Button("OK", role: .cancel) { + showDeleteVehicleAlert = false + } + } message: { + Text("The last vehicle can't be deleted", comment: "Alert message preventing users from deleting their last vehicle") + } .navigationTitle(Text("Settings", comment: "Label to display settings.")) .task { await viewModel.getVehicles() From 638492e0089fd81a8907229aee2424b34e46e0a5 Mon Sep 17 00:00:00 2001 From: Mikaela Caron Date: Sun, 10 Dec 2023 19:02:21 -0500 Subject: [PATCH 2/3] Update Alert copy --- Basic-Car-Maintenance/Shared/Settings/Views/SettingsView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Basic-Car-Maintenance/Shared/Settings/Views/SettingsView.swift b/Basic-Car-Maintenance/Shared/Settings/Views/SettingsView.swift index 3e9776d4..c0ef0a21 100644 --- a/Basic-Car-Maintenance/Shared/Settings/Views/SettingsView.swift +++ b/Basic-Car-Maintenance/Shared/Settings/Views/SettingsView.swift @@ -250,7 +250,7 @@ struct SettingsView: View { showDeleteVehicleAlert = false } } message: { - Text("The last vehicle can't be deleted", comment: "Alert message preventing users from deleting their last vehicle") + Text("The last vehicle can't be deleted. Please add a new vehicle before removing this one.", comment: "Alert message preventing users from deleting their last vehicle") } .navigationTitle(Text("Settings", comment: "Label to display settings.")) .task { From 2623bff148eed4de38689b8cb2139aa61f37929d Mon Sep 17 00:00:00 2001 From: Mikaela Caron Date: Sun, 10 Dec 2023 19:06:42 -0500 Subject: [PATCH 3/3] Update Localizable.xcstrings --- .../Shared/Localizable.xcstrings | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/Basic-Car-Maintenance/Shared/Localizable.xcstrings b/Basic-Car-Maintenance/Shared/Localizable.xcstrings index 6c5fbb74..c2eb8885 100644 --- a/Basic-Car-Maintenance/Shared/Localizable.xcstrings +++ b/Basic-Car-Maintenance/Shared/Localizable.xcstrings @@ -3950,22 +3950,8 @@ } } }, - "The last vehicle can't be deleted" : { - "comment" : "Alert message preventing users from deleting their last vehicle", - "localizations" : { - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "Последний автомобиль удалить невозможно." - } - }, - "tr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Son araç silinemez" - } - } - } + "The last vehicle can't be deleted. Please add a new vehicle before removing this one." : { + "comment" : "Alert message preventing users from deleting their last vehicle" }, "The title of the event" : { "comment" : "Maintenance event title text field label placeholder",