diff --git a/PadelClub/Extensions/Tournament+Extensions.swift b/PadelClub/Extensions/Tournament+Extensions.swift index 099a9f7..b8c3277 100644 --- a/PadelClub/Extensions/Tournament+Extensions.swift +++ b/PadelClub/Extensions/Tournament+Extensions.swift @@ -107,9 +107,9 @@ extension Tournament { players.filter({ $0.hasHomonym() }) } - func payIfNecessary() throws { + func payIfNecessary() async throws { if self.payment != nil { return } - if let payment = Guard.main.paymentForNewTournament() { + if let payment = await Guard.main.paymentForNewTournament() { self.payment = payment DataStore.shared.tournaments.addOrUpdate(instance: self) return diff --git a/PadelClub/Views/Calling/Components/MenuWarningView.swift b/PadelClub/Views/Calling/Components/MenuWarningView.swift index fb3d4bf..4222f2c 100644 --- a/PadelClub/Views/Calling/Components/MenuWarningView.swift +++ b/PadelClub/Views/Calling/Components/MenuWarningView.swift @@ -159,14 +159,16 @@ struct MenuWarningView: View { } } - fileprivate func _payTournamentAndExecute(_ handler: () -> ()) { - do { - try tournament.payIfNecessary() - handler() - } catch { - self.showSubscriptionView = true - } - } +// fileprivate func _payTournamentAndExecute(_ handler: () -> ()) { +// Task { +// do { +// try await tournament.payIfNecessary() +// handler() +// } catch { +// self.showSubscriptionView = true +// } +// } +// } } diff --git a/PadelClub/Views/Match/MatchDetailView.swift b/PadelClub/Views/Match/MatchDetailView.swift index 5e59ccb..7e7e782 100644 --- a/PadelClub/Views/Match/MatchDetailView.swift +++ b/PadelClub/Views/Match/MatchDetailView.swift @@ -608,9 +608,20 @@ struct MatchDetailView: View { } self._verifyUser { - self._payTournamentAndExecute { - self.scoreType = .edition + + Task { + do { + try await self._payTournamentAndExecute() + self.scoreType = .edition + } catch { + self.showSubscriptionView = true + } + } + +// self._payTournamentAndExecute { +// self.scoreType = .edition +// } } } @@ -622,15 +633,9 @@ struct MatchDetailView: View { } } - fileprivate func _payTournamentAndExecute(_ handler: () -> ()) { + fileprivate func _payTournamentAndExecute() async throws { guard let tournament = match.currentTournament() else { fatalError("missing tournament") } - - do { - try tournament.payIfNecessary() - handler() - } catch { - self.showSubscriptionView = true - } + try await tournament.payIfNecessary() } private func save() { diff --git a/PadelClub/Views/Tournament/Subscription/PaymentStatusView.swift b/PadelClub/Views/Tournament/Subscription/PaymentStatusView.swift index 3527cb5..1cb2854 100644 --- a/PadelClub/Views/Tournament/Subscription/PaymentStatusView.swift +++ b/PadelClub/Views/Tournament/Subscription/PaymentStatusView.swift @@ -63,12 +63,16 @@ struct PaymentStatusView: View { EmptyView() } }.onAppear { -// self.payment = nil - self.payment = Guard.main.paymentForNewTournament() + self._loadPayment() } } + fileprivate func _loadPayment() { + Task { + self.payment = await Guard.main.paymentForNewTournament() + } + } } struct FreeTournamentTip: Tip { diff --git a/PadelClub/Views/Tournament/TournamentView.swift b/PadelClub/Views/Tournament/TournamentView.swift index 457f9d2..48e901c 100644 --- a/PadelClub/Views/Tournament/TournamentView.swift +++ b/PadelClub/Views/Tournament/TournamentView.swift @@ -218,10 +218,12 @@ struct TournamentView: View { #if DEBUG Button { - do { - try self.tournament.payIfNecessary() - } catch { - Logger.error(error) + Task { + do { + try await self.tournament.payIfNecessary() + } catch { + Logger.error(error) + } } } label: { Label("Payer le tournoi", systemImage: "dollarsign.circle.fill")