From 48e872a41bcfc42d8eb33b867b7fe24ed9b95060 Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Wed, 26 Jun 2024 17:03:26 +0200 Subject: [PATCH] fix stuff --- PadelClub.xcodeproj/project.pbxproj | 4 ++-- PadelClub/Data/Event.swift | 2 +- PadelClub/Data/Tournament.swift | 9 ++++++++ .../Navigation/Agenda/EventListView.swift | 18 ++++++++++++++++ .../Navigation/Toolbox/ToolboxView.swift | 21 ++++++++++++++++++- .../Components/TournamentStatusView.swift | 11 +++++----- .../Views/Tournament/TournamentInitView.swift | 4 ++-- 7 files changed, 58 insertions(+), 11 deletions(-) diff --git a/PadelClub.xcodeproj/project.pbxproj b/PadelClub.xcodeproj/project.pbxproj index 4ed8b55..51913ad 100644 --- a/PadelClub.xcodeproj/project.pbxproj +++ b/PadelClub.xcodeproj/project.pbxproj @@ -1882,7 +1882,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = PadelClub/PadelClub.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 72; + CURRENT_PROJECT_VERSION = 73; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_ASSET_PATHS = "\"PadelClub/Preview Content\""; @@ -1922,7 +1922,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = PadelClub/PadelClub.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 72; + CURRENT_PROJECT_VERSION = 73; DEFINES_MODULE = YES; DEVELOPMENT_ASSET_PATHS = "\"PadelClub/Preview Content\""; DEVELOPMENT_TEAM = BQ3Y44M3Q6; diff --git a/PadelClub/Data/Event.swift b/PadelClub/Data/Event.swift index 679bdad..2bf385c 100644 --- a/PadelClub/Data/Event.swift +++ b/PadelClub/Data/Event.swift @@ -37,7 +37,7 @@ class Event: ModelObject, Storable { // MARK: - Computed dependencies var tournaments: [Tournament] { - DataStore.shared.tournaments.filter { $0.event == self.id } + DataStore.shared.tournaments.filter { $0.event == self.id && $0.isDeleted == false } } func clubObject() -> Club? { diff --git a/PadelClub/Data/Tournament.swift b/PadelClub/Data/Tournament.swift index eee8c5f..70e79b8 100644 --- a/PadelClub/Data/Tournament.swift +++ b/PadelClub/Data/Tournament.swift @@ -1258,6 +1258,15 @@ defer { return [tournamentLevel.localizedLabel(displayStyle) + " " + tournamentCategory.localizedLabel(), displayStyle == .wide ? name : nil].compactMap({ $0 }).joined(separator: " - ") } + func localizedTournamentType() -> String { + switch tournamentLevel { + case .unlisted: + return tournamentLevel.localizedLabel(.short) + default: + return tournamentLevel.localizedLabel(.short) + tournamentCategory.localizedLabel(.short) + } + } + func hideWeight() -> Bool { return tournamentLevel.hideWeight() } diff --git a/PadelClub/Views/Navigation/Agenda/EventListView.swift b/PadelClub/Views/Navigation/Agenda/EventListView.swift index 2520186..e0575ae 100644 --- a/PadelClub/Views/Navigation/Agenda/EventListView.swift +++ b/PadelClub/Views/Navigation/Agenda/EventListView.swift @@ -110,6 +110,24 @@ struct EventListView: View { Label("Voir dans le gestionnaire", systemImage: "line.diagonal.arrow") } } + #if DEBUG + .swipeActions(edge: .trailing, allowsFullSwipe: true) { + Button(role: .destructive) { + do { + let event = tournament.eventObject() + let isLastTournament = event?.tournaments.count == 1 + try dataStore.tournaments.delete(instance: tournament) + if let event, isLastTournament { + try dataStore.events.delete(instance: event) + } + } catch { + Logger.error(error) + } + } label: { + LabelDelete() + } + } + #endif } private func _federalTournamentView(_ federalTournament: FederalTournament) -> some View { diff --git a/PadelClub/Views/Navigation/Toolbox/ToolboxView.swift b/PadelClub/Views/Navigation/Toolbox/ToolboxView.swift index 61811b5..85ddc43 100644 --- a/PadelClub/Views/Navigation/Toolbox/ToolboxView.swift +++ b/PadelClub/Views/Navigation/Toolbox/ToolboxView.swift @@ -11,7 +11,8 @@ import LeStorage struct ToolboxView: View { @EnvironmentObject var dataStore: DataStore @Environment(NavigationViewModel.self) private var navigation: NavigationViewModel - + @State private var didResetApiCalls: Bool = false + var body: some View { @Bindable var navigation = navigation NavigationStack(path: $navigation.toolboxPath) { @@ -19,6 +20,11 @@ struct ToolboxView: View { Section { Text("Version de l'application").badge(PadelClubApp.appVersion) + .onTapGesture(count: 5) { + Store.main.resetApiCalls() + didResetApiCalls = true + } + SupportButtonView(contentIsUnavailable: false) if Store.main.userId == "94f45ed2-8938-4c32-a4b6-e4525073dd33" { @@ -137,6 +143,19 @@ struct ToolboxView: View { Link("Accéder au guide de la compétition de la FFT", destination: URLs.padelRules.url) } } + .overlay(alignment: .bottom) { + if didResetApiCalls { + Label("failed api calls deleted", systemImage: "checkmark") + .toastFormatted() + .deferredRendering(for: .seconds(3)) + .onAppear { + DispatchQueue.main.asyncAfter(deadline: .now() + 3) { + didResetApiCalls = false + } + } + } + } + .navigationTitle(TabDestination.toolbox.title) } } diff --git a/PadelClub/Views/Tournament/Screen/Components/TournamentStatusView.swift b/PadelClub/Views/Tournament/Screen/Components/TournamentStatusView.swift index e92c761..3b83c2b 100644 --- a/PadelClub/Views/Tournament/Screen/Components/TournamentStatusView.swift +++ b/PadelClub/Views/Tournament/Screen/Components/TournamentStatusView.swift @@ -46,7 +46,12 @@ struct TournamentStatusView: View { RowButtonView("Supprimer le tournoi", role: .destructive) { if tournament.payment == nil { do { + let event = tournament.eventObject() + let isLastTournament = event?.tournaments.count == 1 try dataStore.tournaments.delete(instance: tournament) + if let event, isLastTournament { + try dataStore.events.delete(instance: event) + } } catch { Logger.error(error) } @@ -62,10 +67,6 @@ struct TournamentStatusView: View { } navigation.path = NavigationPath() } - } footer: { - if tournament.payment == nil { - Text("") - } } if tournament.hasEnded() == false && tournament.isCanceled == false { @@ -81,7 +82,7 @@ struct TournamentStatusView: View { dismiss() } } footer: { - Text(.init("Si votre tournoi n'a pas pu aboutir à cause de la météo ou autre, vous pouvez l'annuler et il ne sera pas comptabilisé. Toutes les données du tournoi seront conservées. Le tournoi visible sur [Padel Club](\(URLs.main.rawValue))")) + Text(.init("Si votre tournoi n'a pas pu aboutir à cause de la météo ou autre, vous pouvez l'annuler et il ne sera pas comptabilisé. Toutes les données du tournoi seront conservées. Le tournoi reste visible sur [Padel Club](\(URLs.main.rawValue))")) } } diff --git a/PadelClub/Views/Tournament/TournamentInitView.swift b/PadelClub/Views/Tournament/TournamentInitView.swift index f0de978..7c0d6fd 100644 --- a/PadelClub/Views/Tournament/TournamentInitView.swift +++ b/PadelClub/Views/Tournament/TournamentInitView.swift @@ -41,10 +41,10 @@ struct TournamentInitView: View { NavigationLink(value: Screen.settings) { LabeledContent { - Text(tournament.tournamentTitle(.short)) + Text(tournament.localizedTournamentType()) } label: { LabelSettings() - Text("Formats, statut, club, prix, etc.") + Text("Formats, club, prix et plus") } }