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() }) players.filter({ $0.hasHomonym() })
} }
func payIfNecessary() throws { func payIfNecessary() async throws {
if self.payment != nil { return } if self.payment != nil { return }
if let payment = Guard.main.paymentForNewTournament() { if let payment = await Guard.main.paymentForNewTournament() {
self.payment = payment self.payment = payment
DataStore.shared.tournaments.addOrUpdate(instance: self) DataStore.shared.tournaments.addOrUpdate(instance: self)
return return

@ -159,14 +159,16 @@ struct MenuWarningView: View {
} }
} }
fileprivate func _payTournamentAndExecute(_ handler: () -> ()) { // fileprivate func _payTournamentAndExecute(_ handler: () -> ()) {
do { // Task {
try tournament.payIfNecessary() // do {
handler() // try await tournament.payIfNecessary()
} catch { // handler()
self.showSubscriptionView = true // } catch {
} // self.showSubscriptionView = true
} // }
// }
// }
} }

@ -608,9 +608,20 @@ struct MatchDetailView: View {
} }
self._verifyUser { 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") } guard let tournament = match.currentTournament() else { fatalError("missing tournament") }
try await tournament.payIfNecessary()
do {
try tournament.payIfNecessary()
handler()
} catch {
self.showSubscriptionView = true
}
} }
private func save() { private func save() {

@ -63,12 +63,16 @@ struct PaymentStatusView: View {
EmptyView() EmptyView()
} }
}.onAppear { }.onAppear {
// self.payment = nil self._loadPayment()
self.payment = Guard.main.paymentForNewTournament()
} }
} }
fileprivate func _loadPayment() {
Task {
self.payment = await Guard.main.paymentForNewTournament()
}
}
} }
struct FreeTournamentTip: Tip { struct FreeTournamentTip: Tip {

@ -218,10 +218,12 @@ struct TournamentView: View {
#if DEBUG #if DEBUG
Button { Button {
do { Task {
try self.tournament.payIfNecessary() do {
} catch { try await self.tournament.payIfNecessary()
Logger.error(error) } catch {
Logger.error(error)
}
} }
} label: { } label: {
Label("Payer le tournoi", systemImage: "dollarsign.circle.fill") Label("Payer le tournoi", systemImage: "dollarsign.circle.fill")

Loading…
Cancel
Save