Payment upgrade

sync3
Laurent 2 months ago
parent 604d24c326
commit 9e46c3234f
  1. 4
      PadelClub/Extensions/Tournament+Extensions.swift
  2. 18
      PadelClub/Views/Calling/Components/MenuWarningView.swift
  3. 25
      PadelClub/Views/Match/MatchDetailView.swift
  4. 8
      PadelClub/Views/Tournament/Subscription/PaymentStatusView.swift
  5. 10
      PadelClub/Views/Tournament/TournamentView.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

@ -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
// }
// }
// }
}

@ -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() {

@ -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 {

@ -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")

Loading…
Cancel
Save