From 021a1b8dd43b35fc36fb6151063bc6f9384025b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F=20=D0=9B=D0=B5=D0=B1=D0=B5=D0=B4?= =?UTF-8?q?=D0=B5=D0=B2?= Date: Fri, 4 Apr 2025 04:44:02 +0300 Subject: [PATCH] all teams delete --- .../SiriusProject/Networking/Endpoint.swift | 2 +- .../SiriusProject/View/SettingsView.swift | 20 +++++++++++++++++++ .../ViewModel/SettingsViewModel.swift | 19 ++++++++++++++++++ SiriusProject/en.lproj/Localizable.strings | 5 ++++- SiriusProject/ru.lproj/Localizable.strings | 4 ++++ 5 files changed, 48 insertions(+), 2 deletions(-) diff --git a/SiriusProject/SiriusProject/Networking/Endpoint.swift b/SiriusProject/SiriusProject/Networking/Endpoint.swift index c704e9e..4b45736 100644 --- a/SiriusProject/SiriusProject/Networking/Endpoint.swift +++ b/SiriusProject/SiriusProject/Networking/Endpoint.swift @@ -24,7 +24,7 @@ enum Endpoint { case sendPushesToAll(url: String = Constants.pushesPath, url1: String = Constants.sendToAllPath, teamname: String, score: Int) case sendTextPushesToAll(url: String = Constants.pushesPath, url1: String = Constants.sendToAllPath, text: String, title: String) - case deleteAllTeams(url: String = Constants.pushesPath) + case deleteAllTeams(url: String = Constants.teamsPath) var request: URLRequest? { guard let url = url else { return nil } diff --git a/SiriusProject/SiriusProject/View/SettingsView.swift b/SiriusProject/SiriusProject/View/SettingsView.swift index ece53a4..786c002 100644 --- a/SiriusProject/SiriusProject/View/SettingsView.swift +++ b/SiriusProject/SiriusProject/View/SettingsView.swift @@ -33,6 +33,26 @@ struct SettingsView: View { Text(": ") + Text(isJudge ? LocalizedStringKey("judge") : LocalizedStringKey("participant")) + Button { + viewModel.deleteAllTeams() + } label: { + Text("deleteallteams") + .foregroundStyle(Color.white) + .padding() + .background(Color(.red)) + .cornerRadius(20) + } + .alert("askdeleteallteams", isPresented: $viewModel.showAlert, actions: { + Button("delete", role: .destructive) { + viewModel.deleteTeams = true + } + Button("cancel", role: .cancel) {} + }) + + .alert("teamsdeleted", isPresented: $viewModel.teamsDeleted, actions: { + Button("Ok", role: .cancel) {} + }) + Spacer() Button("changename") { diff --git a/SiriusProject/SiriusProject/ViewModel/SettingsViewModel.swift b/SiriusProject/SiriusProject/ViewModel/SettingsViewModel.swift index 1f62b69..d99f286 100644 --- a/SiriusProject/SiriusProject/ViewModel/SettingsViewModel.swift +++ b/SiriusProject/SiriusProject/ViewModel/SettingsViewModel.swift @@ -11,6 +11,14 @@ final class SettingsViewModel: ObservableObject { let networkManager: NetworkManagerProtocol let logging: Logging @Published var teamName: String = "" + @Published var showAlert: Bool = false + @Published var deleteTeams: Bool = false { + didSet { + deleteAllTeams() + } + } + + @Published var teamsDeleted: Bool = false @AppStorage("teamID") var teamID: Int = 0 init(networkManager: NetworkManagerProtocol, logging: @escaping Logging) { @@ -48,6 +56,17 @@ final class SettingsViewModel: ObservableObject { } } + func deleteAllTeams() { + if !deleteTeams { + showAlert = true + } else { + print("delete all teams") + networkManager.deleteAllTeams(completion: { _ in }) + deleteTeams = false + teamsDeleted = true + } + } + func logOutAction() { UserDefaults.standard.set(false, forKey: "isLogin") UserDefaults.standard.set(false, forKey: "isJudge") diff --git a/SiriusProject/en.lproj/Localizable.strings b/SiriusProject/en.lproj/Localizable.strings index d41fdb6..d7d3804 100644 --- a/SiriusProject/en.lproj/Localizable.strings +++ b/SiriusProject/en.lproj/Localizable.strings @@ -63,4 +63,7 @@ "sendpush" = "Send push to all"; "sendpushbutton" = "Send push"; "finishevents" = "Finish"; - +"deleteallteams" = "Delete all teams"; +"askdeleteallteams" = "Are you sure to delete all teams?"; +"delete" = "Delete"; +"teamsdeleted" = "All commands are deleted"; diff --git a/SiriusProject/ru.lproj/Localizable.strings b/SiriusProject/ru.lproj/Localizable.strings index a9f395c..eef0606 100644 --- a/SiriusProject/ru.lproj/Localizable.strings +++ b/SiriusProject/ru.lproj/Localizable.strings @@ -63,3 +63,7 @@ "sendpush" = "Уведомления для всех"; "sendpushbutton" = "Отправить"; "finishevents" = "Игры завершены"; +"deleteallteams" = "Удалить все команды"; +"askdeleteallteams" = "Вы точно хотите удалить все команды?"; +"delete" = "Удалить"; +"teamsdeleted" = "Все команды удалены";