diff --git a/PadelClub/Data/DataStore.swift b/PadelClub/Data/DataStore.swift index c4a85fa..2a05d74 100644 --- a/PadelClub/Data/DataStore.swift +++ b/PadelClub/Data/DataStore.swift @@ -170,11 +170,36 @@ class DataStore: ObservableObject { } catch { Logger.error(error) } + + DispatchQueue.main.async { + self._localDisconnect() + } } - StoreCenter.main.disconnect() - StoreCenter.main.collectionsCanSynchronize = false + } + + 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() self.clubs.reset() self.courts.reset() @@ -190,7 +215,8 @@ class DataStore: ObservableObject { self.user = self._temporaryLocalUser.item ?? User.placeHolder() 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) } }