diff --git a/PadelClub/Views/Tournament/Subscription/PaymentStatusView.swift b/PadelClub/Views/Tournament/Subscription/PaymentStatusView.swift index 1cb2854..4ab8682 100644 --- a/PadelClub/Views/Tournament/Subscription/PaymentStatusView.swift +++ b/PadelClub/Views/Tournament/Subscription/PaymentStatusView.swift @@ -48,6 +48,8 @@ struct PaymentStatusView: View { @State var payment: TournamentPayment? = .free + @State var noOfferMessage: String? = nil + var body: some View { Group { @@ -58,7 +60,8 @@ struct PaymentStatusView: View { let text = "Tournoi offert (\(remaining) restant\(end))" ImageInfoView(systemImage: "gift.fill", text: text, tip: FreeTournamentTip()) case nil: - ImageInfoView(systemImage: "exclamationmark.bubble.fill", text: "Veuillez souscrire à une offre pour convoquer ou entrer un résultat", textColor: .white, backgroundColor: .logoRed, tip: NoPaymentTip()) + var text = noOfferMessage ?? "Veuillez souscrire à une offre pour entrer un résultat" + ImageInfoView(systemImage: "exclamationmark.bubble.fill", text: text, textColor: .white, backgroundColor: .logoRed, tip: NoPaymentTip()) default: EmptyView() } @@ -77,7 +80,7 @@ struct PaymentStatusView: View { struct FreeTournamentTip: Tip { var title: Text { - return Text("Nous vous offrons vos 3 premiers tournois ! Convoquez les équipes, créez les poules, le tableau comme vous le souhaitez. \nEnregistrez les résultats de chaque équipes et diffusez les scores en temps réel sur les écrans de votre club !\n\n Votre tournoi est décompté lorsque vous convoquez ou que vous rentrez un résultat.") + return Text("Nous vous offrons vos 3 premiers tournois ! Convoquez les équipes, créez les poules, le tableau comme vous le souhaitez. \nEnregistrez les résultats de chaque équipes et diffusez les scores en temps réel sur les écrans de votre club !\n\n Votre tournoi est décompté lorsque vous rentrez un résultat.") } var image: Image? { @@ -88,7 +91,7 @@ struct FreeTournamentTip: Tip { struct NoPaymentTip: Tip { var title: Text { - return Text("Vous ne disposez plus d'une offre vous permettant de convoquer les joueurs et de rentrer les résultats des matchs. Nous vous invitons à consulter les offres dans l'onglet JA.").foregroundStyle(.white) + return Text("Vous ne disposez plus d'une offre vous permettant de rentrer les résultats des matchs. Nous vous invitons à consulter les offres dans l'onglet JA.").foregroundStyle(.white) } var image: Image? { diff --git a/PadelClub/Views/Tournament/TournamentView.swift b/PadelClub/Views/Tournament/TournamentView.swift index fe59ff8..38f8199 100644 --- a/PadelClub/Views/Tournament/TournamentView.swift +++ b/PadelClub/Views/Tournament/TournamentView.swift @@ -168,7 +168,13 @@ struct TournamentView: View { case .print: PrintSettingsView(tournament: tournament) case .share: - ShareModelView(instance: tournament) + ShareModelView(instance: tournament, handler: { users in + if users.count > 0 { + Task { + try? await self.tournament.payIfNecessary() + } + } + }) case .restingTime: TeamRestingView() case .stateSettings: diff --git a/PadelClub/Views/User/ShareModelView.swift b/PadelClub/Views/User/ShareModelView.swift index 5cbe647..b0f2c08 100644 --- a/PadelClub/Views/User/ShareModelView.swift +++ b/PadelClub/Views/User/ShareModelView.swift @@ -10,16 +10,22 @@ import LeStorage import SwiftUI import PadelClubData +typealias UsersClosure = (([String]) -> ()) + struct ShareModelView : View { @StateObject private var viewModel = UserSearchViewModel() let instance: T - - @State var payment: TournamentPayment? = nil + var handler: UsersClosure? = nil var body: some View { List { + if T.self is Tournament.Type { + Section { + PaymentStatusView(noOfferMessage: "Veuillez souscrire à une offre afin de payer le tournoi") + } + } if !self.viewModel.availableUsers.isEmpty { ForEach(self.viewModel.availableUsers, id: \.id) { user in let isSelected = viewModel.contains(user.id) @@ -50,9 +56,10 @@ struct ShareModelView : View { .toolbarBackground(.visible, for: .navigationBar) .onAppear { self.viewModel.selectedUsers = StoreCenter.main.authorizedUsers(for: self.instance.stringId) - } - .task { - self.payment = await Guard.main.paymentForNewTournament() + }.onDisappear { + if let handler { + handler(self.viewModel.selectedUsers) + } } }