From 08cf60629be1d75f84cfd9eb7de28e93ca70bab3 Mon Sep 17 00:00:00 2001 From: Laurent Date: Wed, 1 Oct 2025 17:10:54 +0200 Subject: [PATCH] Implement the capacity from a user to remove himself from the sharing --- .../Views/Tournament/TournamentView.swift | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/PadelClub/Views/Tournament/TournamentView.swift b/PadelClub/Views/Tournament/TournamentView.swift index c65ba53..bed4487 100644 --- a/PadelClub/Views/Tournament/TournamentView.swift +++ b/PadelClub/Views/Tournament/TournamentView.swift @@ -12,6 +12,7 @@ import PadelClubData struct TournamentView: View { @EnvironmentObject var dataStore: DataStore + @Environment(\.dismiss) private var dismiss @Environment(NavigationViewModel.self) var navigation: NavigationViewModel @State var tournament: Tournament @@ -337,7 +338,12 @@ struct TournamentView: View { } } else { Button { - DataStore.shared.deleteTournament(self.tournament, noSync: true) + self._removeUserFromSharing() + + + // StoreCenter.main.setAuthorizedUsers(for: <#T##T#>, users: T##[String]) +// +// DataStore.shared.deleteTournament(self.tournament, noSync: true) } label: { Label("Quitter la supervision", systemImage: "person.crop.circle.badge.minus") } @@ -354,6 +360,19 @@ struct TournamentView: View { Logger.log("Tournament Id = \(self.tournament.id), Payment = \(String(describing: self.tournament.payment))") } } + + fileprivate func _removeUserFromSharing() { + guard let userId = StoreCenter.main.userId else { return } + var users = StoreCenter.main.authorizedUsers(for: self.tournament.id) + users.removeAll(where: { $0 == userId }) + do { + try StoreCenter.main.setAuthorizedUsers(for: self.tournament, users: users) + DataStore.shared.deleteTournament(self.tournament, noSync: true) + dismiss() + } catch { + Logger.error(error) + } + } private func _save() { dataStore.tournaments.addOrUpdate(instance: tournament)