diff --git a/PadelClub/Data/DataStore.swift b/PadelClub/Data/DataStore.swift index 4f2cf93..2a05d74 100644 --- a/PadelClub/Data/DataStore.swift +++ b/PadelClub/Data/DataStore.swift @@ -171,8 +171,33 @@ class DataStore: ObservableObject { Logger.error(error) } + DispatchQueue.main.async { + self._localDisconnect() + } } + } + + func deleteAccount() { + + Task { + do { + let services = try StoreCenter.main.service() + try await services.deleteAccount() + } catch { + Logger.error(error) + } + + DispatchQueue.main.async { + self._localDisconnect() + } + + } + + } + + fileprivate func _localDisconnect() { + StoreCenter.main.collectionsCanSynchronize = false self.tournaments.reset() @@ -192,7 +217,6 @@ class DataStore: ObservableObject { self.user.clubs.removeAll() StoreCenter.main.disconnect() - } func copyToLocalServer(tournament: Tournament) { diff --git a/PadelClub/Views/User/AccountView.swift b/PadelClub/Views/User/AccountView.swift index 75d4627..e7583dc 100644 --- a/PadelClub/Views/User/AccountView.swift +++ b/PadelClub/Views/User/AccountView.swift @@ -22,6 +22,13 @@ struct AccountView: View { DataStore.shared.disconnect() handler() } + + Section { + RowButtonView("Supprimer mon compte", role: .destructive, confirmationMessage: "Voulez-vous vraiment supprimer définitivement votre compte et ses données associées ?") { + DataStore.shared.deleteAccount() + handler() + } + } }.navigationTitle(user.username) } }